环境:
windows : win10 64bit
opencv: opencv 3.0
cmake: cmake-3.11.1-win32-x86
QT: QT 5.5.0
安装完Cmkae,并安装设置为 for all users。
添加系统环境变量
(1)、 D:\Qt\Qt5.5.0\Tools\mingw492_32\bin
(2)、D:\Qt\Qt5.5.0\Tools\mingw492_32\i686-w64-mingw32\lib
(3)、D:\Qt\Qt5.5.0\5.5\mingw492_32\bin
否则会出现如下错误:
CMake Error at C:/Program Files (x86)/CMake 3.11/share/cmake-3.11/Modules/FindQt4.cmake:1382 (message):
Found unsuitable Qt version "" from NOTFOUND, this code requires Qt 4.x
Call Stack (most recent call first):
CMakeLists.txt:13 (FIND_PACKAGE)
1)source code: E:\Work_station\opencv\opencv\sources
where to build the binaries: E:\Work_station\opencv\opencv\qt_build
2)点击 configure
选择 MinGW Makefiles 和 Specify native compilers, 点击next
C:D:\Qt\Qt5.5.0\Tools\mingw492_32\bin\gcc.exe
C++:D:\Qt\Qt5.5.0\Tools\mingw492_32\bin\g++.exe
最后一个空着,点击finish
3)在搜索框依次查找WITH_QT, WITH_TBB, WITH_IPP, WITH_CUDA, CMAKE_BUILD_TYPE,确保
WITH_QT - 选中.
WITH_TBB, WITH_IPP, WITH_CUDA - 不选
CMAKE_BUILD_TYPE - 点击并输入Debug
4) 点击configure,done后点击generate,关闭CMake
4、 编译
输入mingw32-make
可能错误:
modules\videoio\CMakeFiles\opencv_videoio.dir\build.make:187: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_dshow.cpp.obj' failed mingw32-make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_dshow.cpp.obj] Error 1 CMakeFiles\Makefile2:2867: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' failed mingw32-make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2 Makefile:161: recipe for target 'all' failed
解决办法:
cap_dshow.cpp 文件中#include "precomp.hpp"后添加
#define STRSAFE_NO_DEPRECATE 并 使用#注释掉OpenCVCompilerOptions.cmake文件中
的 add_extra_compiler_option(-Werror=non-virtual-dtor) 。
将D:\Qt\Qt5.5.0\Tools\QtCreator\bin加入系统环境变量
1)、拷贝原win编译下的build文件夹下的include文件夹(包含opencv和opencv2)到out_file;
2)、拷贝qt_build文件夹下的lib和bin文件夹到out_file。
(备注: 即out_file文件夹下最终有三个文件夹)
INCLUDEPATH+=E:\Work_station\opencv\opencv\out_file\include\
E:\Work_station\opencv\opencv\out_file\include\opencv\
E:\Work_station\opencv\opencv\out_file\include\opencv2
LIBS+=E:\Work_station\opencv\opencv\out_file\lib\libopencv_videostab300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_stitching300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_calib3d300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_features2d300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_superres300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_objdetect300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_shape300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_imgcodecs300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_video300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_core300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_imgproc300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_videoio300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_flann300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_highgui300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_photo300d.dll.a\
E:\Work_station\opencv\opencv\out_file\lib\libopencv_ml300d.dll.a
#include "mainwindow.h"
#include
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui/highgui.hpp"
#include
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
Mat src_image;
src_image = imread("F:\\lena.jpg", IMREAD_COLOR);
if (src_image.empty())
return -1;
imshow("src_image", src_image);
waitKey(0);
return 0;
}
错误1 :在编写完步骤8 的程序后,测试时,一直提示 imread函数undefined。但是实际头文件也是包含的。
解决办法: 添加的LIB不完整。最后补全就好。
错误2 :运行代码时,提示 qt opencv 程序异常结束
解决办法:
1)、首先确保你把你qt编译器下的所有bin目录添加到了系统的path环境中;
2)、把你编译好的opencv目录下的bin目录添加到系统的path环境中;
3)、这个时候重新编译你的代码,如果不行,那就关机再试一次,绝对可以的。
参考链接:
https://blog.csdn.net/combfish/article/details/21445847
https://blog.csdn.net/qq_21078557/article/details/78962135