记录一下配置过程,回过头来还能照着配置,也希望能帮助到遇到相同问题的各位。
一、mingw编译opencv
参考这个链接,我安装了opencv4.5.5,用mingw64编译
Windows10 环境下使用 Cmake 和 MinGW-w64 编译安装 OpenCV 4.0.1
起初第一次编译错误,原因是windows cmake configure时候有3个文件没有下载下来,这时候可以用迅雷下载下来,然后放入到指定文件夹,再重新点击configure
下边是对应的缺少的文件,和右边的下载地址。
文件最右边是要存放的目录
对于ffmpeg_version.cmake可能需要科学上网才能下载,我放在本文最后的附录了。
二、配置CMakeLists.txt
首先要安装这两个插件,建议把其他cmake插件关了,以面出现冲突。
这是之前编译完的opencv的地址,安装好的头文件和库文件都在install里面
首先创建一个CMakeLists.txt
注意Opencv_DIR修改为自己的opencv安装目录
cmake_minimum_required(VERSION 3.17) project(test) set(CMAKE_CXX_STANDARD 11) set(OpenCV_DIR E:/lib/opencv/build-mingw64/install) add_executable(${PROJECT_NAME} main.cpp ) find_package(OpenCV REQUIRED) if(OpenCV_FOUND) include_directories(${OpenCV_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS}) endif()
三、源文件
同目录下还有一个main.cpp
#include<opencv2/opencv.hpp> int main(){ //cv::Mat img=cv::imread("1.png"); //cv::imshow("img",img); //cv::waitKey(0); return 0; }
四、使用CMakeTool进行编译
点击左下方的蓝条,指向的是选择编译器
选择mingw编译器,注意:之前用哪个mingw版本编译的,这边就用哪个,不然可能会出现不兼容。
然后直接点击 红色的debug或者黄色的run就行了
现在是build完,并运行了,但是还暂时没有测试用例,因此是空运行
目录下出现一个build文件,就是cmakelist.txt的build结果,里面的test.exe就是生成可执行文件,在build目录下放一张1.jpg,用作测试
五、测试
#include<opencv2/opencv.hpp> int main(){ cv::Mat img=cv::imread("1.png"); cv::imshow("img",img); cv::waitKey(0); return 0; }
发现#include
这行有红色的波浪线,表示vscode没有检测到头文件,虽然不影响编译,但是非常难受
六、vscode中加入头文件
ctrl+shift+p 选择编辑配置(UI)
修改为mingw的g++路径
包含路径中加入 opencv安装的include目录
最后还要把该bin目录,添加到环境变量,否则vscode会出现提示。
以上仅仅是为了让vscode去识别,但是不影响编译过程(不然出现红色波浪线或者warning还是非常难受的)
七、最终测试
八、一些问题
1、CMakeLists.txt中find_package出现红线?
说明没有找到,一种原因是OpenCV_DIR没有设置正确,还有种原因是,编译的opencv与使用的编译器对不上,比如使用的是mingw,而用的却是msvc的
2、Cmaketool(下方蓝条)中没有能选择的mingw版本?
要把之前用于编译的mingw加入到环境变量中。
如果已经加入了,依然没有显示,如果安装了多个版本的mingw尝试把其他版本的从环境变量移除
3、Cmaketool中已经选择了想要的mingw版本,一点击运行但执行的是其他mingw版本
我之前就点了 执行,然后运行成功了。
一点击debug,就出现执行的QT目录下mingw的gdb.exe,可是明明已经从环境变量中去除了。这个是vscode本身的问题,需要关闭重新开启vscode。
4.CMaketool插件注意事项
如果点击这一项,build的未必是选择编译器…,因此如果要使用debug就直接点击右侧的 瓢虫(运行debug)
想用release就点击右侧 的 箭头(运行realse)
九、附录
ffmpeg_version.cmake
set(FFMPEG_libavcodec_FOUND 1) set(FFMPEG_libavformat_FOUND 1) set(FFMPEG_libavutil_FOUND 1) set(FFMPEG_libswscale_FOUND 1) set(FFMPEG_libavresample_FOUND 1) set(FFMPEG_libavcodec_VERSION 58.134.100) set(FFMPEG_libavformat_VERSION 58.76.100) set(FFMPEG_libavutil_VERSION 56.70.100) set(FFMPEG_libswscale_VERSION 5.9.100) set(FFMPEG_libavresample_VERSION 4.0.0)