Window10 OpenCV3.4.7 CMake3.18.0 QT5.5.0 编译配置及调用

QT开发中经常遇到使用OpenCV,记录一下OpenCV库的编译调用过程。

环境:Window10 64位

一、安装软件:1、OpenCV  2、CMake 3、QT

1、安装OpenCV 3.4.7

下载地址:https://opencv.org/releases/        opencv-4.3.0-vc14_vc15.exe

安装OpenCV很简单,其实就是一个解压动作,解压到非中文目录下,我的目录是C:\OpenCV3.4.7

2、安装QT5.5.0

qt-opensource-windows-x86-mingw492-5.5.0.exe

下载地址:http://download.qt.io/archive/qt/

我下载的是5.5带MinGW版本,安装没什么好讲的,直接下一步,下一步,完成

3、安装CMake3.18

cmake-3.18.0-rc2-win64-x64.msi

下载地址:https://cmake.org/download/

安装时注意选择添加到系统变量,其它默认一路下一步,直到完成

二、配置环境变量

C:\Program Files\CMake\bin  CMake环境变量

C:\Qt\Qt5.5.0\Tools\mingw492_32\bin    MinGW环境变量

三、配置编译OpenCV

打开刚才安装的CMake

设置OpenCV源码路径

设置OpenCV编译输出路径(自建目录)

然后点击下面的Configure按钮,弹出窗口中的<指定该项目的生成器>选择MinGW Makefiles,下面单选框选择Specify  native compilers,单击下一步;

弹出窗口,选择C和C++编译器的目录,在QT5.5目录中tools目录里的MinGW工具里,单Finish完成

红色行为有错误,按下面的信息修改就行了,第一次点配置按钮,要很长时间,更改后重新单击配置按钮,直到没有错误

选中“WITH_OPENGL”、“WITH_QT”,将“WITH_IPP”取消。然后再次点【Configure】

Qt5_DIR            值为:C:/Qt/Qt5.5.0/5.5/mingw492_32/lib/cmake/Qt5
QT_QMAKE_EXECUTABLE    值为:C:/Qt/Qt5.5.0/5.5/mingw53_32/bin/qmake.exe
Qt5Concurrent_DIR        值为:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5Concurrent
Qt5Core_DIR          值为:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5Core
Qt5Gui_DIR              值为:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5Gui
Qt5Test_DIR             值为:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5Test
Qt5Widgets_DIR           值为:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5Widgets
Qt5OpenGL_DIR            值为:C:/Qt/Qt5.5.0/5.5/mingw53_32/lib/cmake/Qt5OpenGL

当信息显示Configuring done且没有错误时,单击generate按钮,生成完毕后,先不要关闭CMake如果后面编译有错误,还要更改配置。


下面开始用MinGW来编译OpenCV

使用管理员模式打开CMD

cd 到刚才CMake生成的源码目录(就是之前自己新建的文件夹),准备编译

输入“mingw32-make”命令,如果提示找不到命令啥的,看看文章前面的MinGW系统变量是不是没有设置,目录为C:\Qt\Qt5.5.0\Tools\mingw492_32\bin,根据你的QT安装位置设置环境变量

按回车进行编译

哦霍

一片绿油油后出现error

错误1

[ 40%] Building RC object modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj

gcc: error: long: No such file or directory

解决方法:在cmake里面找到OPENCV_ENABLE_ALLOCATOR_STATS或者在search里面搜索,然后把后面的勾选去掉,接着Configure和Generate后,接着在cmd窗口中mingw32-make即可继续编译。

错误2

C:\OpenCV3.4.7\modules\videoio\src\cap_dshow.cpp:2298:41: error: 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintf
A' was not declared in this scope

C:\OpenCV3.4.7\modules\videoio\src\cap_dshow.cpp中添加
#define STRSAFE_NO_DEPRECATE

错误3

chmod’ 不是内部或外部命令,也不是可运行的程序 或批处理文件

    if(NOT CMAKE_HOST_WIN32)  # chmod may be not available on Win32/MinGW (and it is not required)
      set(_pch_prepare_command COMMAND chmod +x "${_pch_generate_file_cmd}")
    endif()
    ADD_CUSTOM_COMMAND(
      OUTPUT "${_output}"
      COMMAND ${CMAKE_COMMAND} -E make_directory "${_outdir}"
      COMMAND chmod +x "${_pch_generate_file_cmd}"
      ${_pch_prepare_command}

错误4

报错文件test_hdr.cpp

error: 'time' was not declared in this scope

在头部引用一下

#include <sys/time.h>

错误5

错误行:C:/OpenCV3.4.7Build/modules/dnn/test_precomp.hpp:50:27: fatal error: test_common.hpp: No such file or directory
 #include "test_common.hpp"

把C:\OpenCV3.4.7\modules\dnn\test\test_common.hpp复制到C:\OpenCV3.4.7Build\modules\dnn\

经过个把小时绿油油输出后,编译完成。

编译成功后,再输入mingw32-make install,回车运行

安装完成

将编译生成目录中的bin目录添加到系统变量

C:\OpenCV3.4.7Build\bin

四、QT调用测试

打开QT新建一个工程

在xxx.pro中添加

INCLUDEPATH+="C:\OpenCV3.4.7Build\install\include"
INCLUDEPATH+="C:\OpenCV3.4.7Build\install\include\opencv"
INCLUDEPATH+="C:\OpenCV3.4.7Build\install\include\opencv2"
LIBS += C:\OpenCV3.4.7Build\lib\libopencv_*.a

在main.cpp中添加

#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    //声明IplImage指针
       IplImage *pImg;
       //载入图片
       pImg = cvLoadImage("D:\\0200626235750.jpg", 1);
       //创建窗口
       cvNamedWindow("Image",1);
       //显示图像
       cvShowImage("Image",pImg);
       //等待按键
       cvWaitKey(0);
       //销毁窗口
       cvDestroyWindow("Image");
       //释放图像
       cvReleaseImage(&pImg);

运行程序,如果显示如下图,则调用成功

猜你喜欢

转载自blog.csdn.net/cnicfhnui/article/details/106972647