QT+Cmake编译OpenCV常见问题

来源:互联网 发布:nginx事件驱动模型 编辑:程序博客网 时间:2024/04/30 12:27

        网上有很多关于常见问题的帖子,但是遗憾的是。我遇到的问题,几乎都找不到。终于在千万帖子中,找到了一个,能解决我问题的。但是,这个帖子讲的不完全对。所以,才有了自己写一篇文章的想法。好了,不罗嗦。下面开始。

1、下载所需文件并安装

Cmake 官网地址(https://cmake.org/)

OpenCV官网地址(http://opencv.org/)

QT官网地址(https://www.qt.io/ )

         安装OpenCV,其实就是解压缩,选定合适的位置(最好不要有中文目录,不要有空格)

[温馨提示]!:开发环境,可选安装的路径的情况下,应尽可能避开安装路径有空格,如确实需要空格来隔开以表示目录的情况,可选下划线代替空格

安装Cmake。安装QT,如果条件允许,建议完整安装;否则,可将Andriod等取消掉。

2、搭建环境,编译

安装完OpenCV以后,打开OpenCV的source目录,找到并打开CMkaeLists.txt,建议使用UltraEdit打开,可以自动调整排版。

可用CTRL+F 来查找cmake_minimum_required,[cmake minimum required 要求Cmake最低版本],找到 else()后面的那个,你所使用的CMake版本只需要高于这个字段后的版本就可以。参考[1]说的只认这个版本,这里面说的不对。


安装完之后,需要将QT安装目录里面Tools路径下的mingw写入到系统的环境变量里面。这里是Windows10,我的是[D:\Qt_5.6.2\Tools\mingw492_32\bin]。

具体方法是,此电脑->属性->  高级系统设置 ->环境变量 ->系统变量 ->path,将这个路径添加到里面,并放到最前面。这个应该都没有问题的。

打开cmake-gui,然后选择source code的路径,即是OpenCV安装目录下的souce目录(有些童鞋可能担心会影响以后的VS+OpenCV的环境,可以将source文件夹copy到别处,然后再选择copy之后的source目录即可),选择build 后的路径(这个后边有用),然后点击Configure,选择默认的MiGW Makefiles,然后Finish, 进行编译器配置。


第一次configure后,出现一片红,不要害怕,这里面,需要勾选WITH_OPENGL 和WITH_QT,然后第二次configure,这是后会报错,提示Error in configuration process,project files may be invalid。


其实这个时候可将报错关闭,然后将错误内容拿出来放到UltraEdit来分析错误原因。会发现很多都找不到。而直接将这些找不到的内容去在QT安装目录里面找,会发现都在QT安装目录的版本号对应的mingw的目录内。所以这个时候,需要点击Add Entry,然后添加CMAKE_PREFIX_PATH,Type选Path,Value选择QT对应版本号下面的mingw的目录,是bin的上一层目录我的是 [D:\Qt_5.6.2\5.6\mingw49_32]


添加完之后,再进行第二次configure,出现configure done之后,点击Generate生成对应的文件即可。


3、Make, Make-install


这个时候,进入到build to后面设置的那个目录,按住SHIFT键,右击,出现在此处打开命令窗口,输入mingw32-make,完成之后再次输入mingw32-make install。全部完成之后。关闭命令行窗口。注:这两个步骤,时间比较长。此处参考[2]


4、整理生成后的文件

编译安装后的文件,仅有目标目录中的bin目录下的文件和lib目录下的文件需要,其他都可以删除。还需要安装目录下的build目录下的include目录。

建议在OpenCV的安装目录下新建build_QT或者build_mingw,或者build_MinGW目录,然后将build目录下的include目copy到此处。并建立x86目录,然后将编译后的bin和lib目录copy到此处。


然后将[安装目录\build_QT\x86\bin] 这个路径加到环境变量里面,并放置在最前。安装目录是OpenCV的根目录,我的是[D:\OpenCV ],我的完整路径是[D:\OpenCV\build_QT\x86\bin]


5、收集应用过程中需要的文件

点击进入到build_QT\x86\lib目录下,按住SHIFT,右键打开命令行,输入dir *.dll.a,列出需要的库文件,可将这些文件名copy到notepad,然后将文件名前面都加上[安装目录\build_QT\x86\bin]。方法是copy文件头libopencv,然后CTRL+H,查找内容为libopencv,替换为安装目录\build_QT\x86\bin\libopencv 。按照前面方法并再次替换.a 为 .a\


完成后可将内容存到文本文件中以备以后使用


6、编写程序测试

具体源文件不多说,跟在VS差不多。说说pro文件的内容添加

INCLUDEPATH += ~\build_QT\include

~\build_QT\include\opencv\

~\build_QT\include\opencv2\

LIBS += libs-list

将存到文本文件中的内容copy到libs-list处。~为安装目录

很多童鞋可能会觉得LIBS后面的内容太多,太麻烦。

LIBS出还有一种简单的方法

LIBS += ~\build_QT\x86\lib\*.dll.a\

用以替换那一大段内容。这种方法,本人亲测,可行。~代替内容同上


参考内容:

[1]http://blog.csdn.net/u013935238/article/details/42411685

[2] http://blog.csdn.net/qiurisuixiang/article/details/8665278/

1 0
原创粉丝点击