#史上最详细的教程#手把手带你配置openCV(以Qt5.12为例)

OpenCV是什么?

OpenCV(Open Source Computer Vision)是一个开源的计算机视觉库,由一系列函数和算法组成,用于处理图像和视频数据。它提供了丰富的图像处理和计算机视觉功能,包括图像读取和保存、图像预处理、特征提取、物体检测、目标跟踪、摄像机标定等。OpenCV可以在多个平台上运行,包括Windows、Linux、macOS等,支持多个编程语言,如C++、Python和Java等。因其功能强大和易用性,OpenCV被广泛应用于计算机视觉领域的开发和研究。

                                                                                                                                     ——ChatGPT

开始配置

配置过程繁琐,推荐读者按照本文一样的配置。

下载opencv

地址:opencv.org/releases/,下载最新版本即可。

下载CMake

地址:cmake.org/download/,推荐下载3.17.3版本。

安装opencv和CMake

opencv安装实际上是一个解压过程,读者可自行安装opencv和CMake(opencv:本文安装在C:\opencv目录).下载完成后,在opencv目录下新建文件夹opencv_binaries,如图所示。

配置opencv

打开CMake,按图示填写两个文本框:

点击configure按钮(如图)。

弹出窗口如图所示,按图示选择。

输入C和C++编译器位置,如图。

然后确定,点击configure。配置是会检查数据类型、头文件、环境等信息。经过漫长的配置过程后,文本框里出现很多红色项目。 

现在,要对上面的项目进行操作。具体如下表。

内容 操作
WITH_WEBP 取消勾选
WITH_Qt 勾选
WITH_OPENGL 勾选
OPENCV_VS_VERSIONINFO_SKIP 添加BOOL,要勾选
OPENCV_ENABLE_ALLOCATOR_STATS

取消勾选

此时,再次单击configure按钮。再次配置后,直至没有红色项目,关闭cmake。

在opencv_binaries文件夹(用资源管理器打开)上方输入cmd回车打开命令提示符。

打开后,输入命令“mingw32-make"回车。

如果想要加快速度,可以输入"mingw32-make -j x",其中x替换成你的电脑线程数,如图。

等待漫长的配置过程。其中,如果出现以下错误之一而停止,再输一遍命令即可。

Linking C static library ..\lib\liblibwebp.a
[ 15%] Built target libwebp
mingw32-make: *** [Makefile:165: all] Error 2
[ 34%] Linking CXX shared library ..\..\bin\libopencv_imgproc480.dll
[ 35%] Built target opencv_imgproc
mingw32-make: *** [Makefile:165: all] Error 2
[ 40%] Linking CXX shared library ..\..\bin\libopencv_imgcodecs480.dll
[ 40%] Built target opencv_photo
[ 40%] Linking CXX shared library ..\..\bin\libopencv_features2d480.dll
[ 40%] Built target opencv_imgcodecs
[ 40%] Built target opencv_features2d
mingw32-make: *** [Makefile:165: all] Error 2

100%结束后,输入”mingw32-make install",这回就一帆风顺。把C:\opencv\opencv_binaries\bin加入path,重启电脑生效。

附录1 如何添加path路径。

“计算机”邮件,选择属性,如图。

选择红框内容,点击“环境变量”,找到path双击,点击“添加”即可。

附录2 测试代码

新建plain C++项目,在pro文件中添加以下语句:

INCLUDEPATH += C:/opencv/build/include
LIBS += C:/opencv/opencv_binaries/lib/lib*.a

在main.cpp中添加:

#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
    Mat m=imread("C:/a.jpg",1);
    imshow("test",m);
    waitKey(0);
    return 0;
}

好了,如果你已经看到图片显示,说明你成功了。

图片路径不要用相对路径,如果编译时帧图像宽度为零会报错。

猜你喜欢

转载自blog.csdn.net/hzxhxyj1/article/details/133975719