使用Qt的minGW编译OpenCV源码

在使用Qt作为界面开发框架之后,Qt中可以用VS编译器对本文所编写的代码进行编译,但是如果电脑中没有安装VS的话,是没法使用该编译器的,而且就算安装好VS后,由于本文程序的实现需要用到OpenCV,并且在后面要对程序实现一个移植的操作,也就是使本文的程序可以安装到别人的电脑上,由于开发环境复杂,程序所依赖的库很多,导致给移植操作带来很多麻烦,所以,本文在这里不选择VS中的编译器,直接选择Qt的本地编译器MinGW,此时就需要编译OpenCV源码了,因为之前的OpenCV是用Windows上其他的编译器编译出来的,所以想要使用MinGW编译器的话必须要使用MinGW编译器对OpenCV源码进行编译和安装。

在开始用MinGW编译器编译和安装OpenCV之前,需要使用CMake[28]对OpenCV源码进行编译和配置,CMake是一个跨平台的安装(编译)工具,可以用简单的语句命令来描述所有平台的安装(编译过程)。他能够编写各种各样的Makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的Automake。

                                                        图4.2 CMake图标

下面本文开始使用CMake对OpenCV源码进行编译,首先双击打开已经下载好的CMake应用程序,然后导入OpenCV源码和选择CMake构建的路径,然后点击configure如图4.3所示对话框。打开下拉组合框选择MinGW Makefiles。

图4.3指定MinGW编译器

点击next浏览本地Qt安装目录选择g++.exe和gcc.exe路径,如图4.4所示。

                

图4.4 选择g++和gcc

点击完成开始编译,编译的过程如图4.5所示。

图4.5 正在configure中

这个过程是一边编译一边下载所需要的动态库的过程,到最configure结束后会发现有报错信息产生,错误原因是下载opencv_videoio_ffmpeg.dll和opencv_videoio_ffmpeg_64.dll失败。

因为CMake是连接外网服务器下载相关资源的,下载速度极其缓慢,这两动态库很大,所以导致下载失败了,本文需要解决这个报错才能继续往下进行,不然后面的generate会产生很多不可预期的错误。报错信息如图4.6所示。

图4.6出现红色报错信息

为了解决上面的报错信息,经过多次尝试发现通过别的渠道下载到opencv_videoio_ffmpeg.dll和opencv_videoio_ffmpeg_64.dll这两个动态链接库,然后将这两个库拷贝到OpenCV安装目录下的sources\3party\ffmpeg下面,此时依然不能开始下一步的Generate工作,此时还需要做一些选项的配置。在执行generate之前先将WITH_OPENGL和WITH_OPENMP以及BUILD_opencv_world选上WITH_OPENCL_D3D12_NV选项取消掉,如图4.7所示。

图4.7选项配置

以上的选项配置好之后开始执行Generate,Generate执行完毕时候本文看到对话框底部出现”Configure done”和”Generating done”如图4.8所示,就表示本文的CMake阶段工作完美结束。

图4.8 CMake结束

CMake结束后会在本地新建的OpenCV下的newbuilds文件夹下面生成许多接下来编译和安装需要的文件及代码。

接下来就可以进入到dos窗口进行make操作了,进入dos窗口进入到,分别执行如下命令cd /d E:\opencv4.5\opencv\newbuilds;mingw32-make -j 8 进入到make阶段。命令mingw32-make -j 8中的”8”表示指定cpu 8个核一起工作提高效率,毕竟OpenCV源码很庞大,需要编译很长时间(实际编译半小时),当然编译时间抓哟取决于电脑的硬件条件,配置越高编译时间越短,反之时间越长。如图4.9显示make编译结束。

图4.9 make结束

当黑窗口最小面出现“%100Linik CXX...”时表示make完毕,接下来执行命令:ming32-make install将编译好的代码安装到本地,由图4.10可以明确的看到最新编译的OpenCV已经安装到目录E:\opencv4.5\opencv\newbuilds\install文件夹下。

           

        make install结束                                         make install产生的结果

图4.10 执行命令ming32-make install结果

添加环境变量,此时opencv源码已经编译结束并且安装完毕了,需要将E:\opencv4.5\opencv\newbuilds\install\x64\mingw\bin添加到环境变量中去。

                              

图4.11 给新编译安装的OpenCV添加环境变量

这一步工作结束以后表示本文的OpenCV源码重新编译安装已经完成了,接下来就可以新建一个Qt项目测试我们的OpenCV源码编译工作是否成功

(1)新建一个项目,打开Qt新建一个项目,选择桌面应用程序,工程名取为“HC”,编译器选择MinGW 64bit本地编译器,界面如图4.12所示。

图4.12 选择Qt本地编译器

点击“确定”后,由于本文编译的的OpenCV是Release模式,所以新建的开发环境由Debug模式切换为Release模式,也就是将调试模式改为发布模式,为后面将软件系统打包发布做准备。

图4.13将平台调试改为发布模式

   (2) 引入OpenCV库,之前使用CMake对OpenCV源码进行编译,然后再安装,做了这么多工作就是为了能在Qt项目中使用,因此,在新建好的项目中只需要引入OpenCV库即可在Qt环境中编写基于OpenCV的识别圆的算法程序了。右击项目名称,点击“添加库”,选择“外部库”,导入本文编译好的opencv的库文件路径:E:\opencv4.5\opencv\

newbuilds\install\x64\mingw\lib\libopencv_world454.dll.a和包含路径:E:\opencv4.5\opencv\newbuilds\install\include。Qt添加库界面如图4.14所示。

 

图4.14为项目引入OpenCV头文件路径和库路径

   (3) 检测开发环境是否完整无误,在将OpenCV相关的头文件和库文件路径引入后,本文测试一下环境有没有问题,在这里只需要使用OpenCV提供的两个接口:imread()和imshow()读入一张图片,然后显示出来,如果能显示出来读入的图片,那么就表明Qt和OpenCV环境搭建的没有任何问题了,通过几行代码得到如图4.15所示结果。

  图4.15环境搭建成功

当通过OpenCV提供的相关接口显示出图4.15的图片以后就表明Qt源码编译的没有问题,接下来就可以在Qt环境中编写基于OpenCV的代码程序了。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值