Qt Creator中调用Opencv
使用Qt Creator调用opencv
本案例使用Visual Studio 2015+Opencv4.6.0+Qt Creator 5.9.1
一、构建套件
在构建套件之前,需正确安装Visual Studio、Opencv和WindowsSDK,可参考博客1、博客2
当正确安装后,一般情况下,在Qt Creator会自动识别到VS的编译器和调试器,并会自动构建好。若调试器未能自动识别,可自行找到相关的安装路径(cdb.exe文件),然后添加,自行命名好即可。
![](https://img2023.cnblogs.com/blog/1987842/202310/1987842-20231021192456717-957572468.png)
![](https://img2023.cnblogs.com/blog/1987842/202310/1987842-20231021192456717-593295424.png)
同理,若套件未能自动构建,则自己手动选择编译器和调试器。
![](https://img2023.cnblogs.com/blog/1987842/202310/1987842-20231021192456732-1560504006.png)
当未构建好或构建的路径不正确时会显示红色感叹号,若没有调试器则会显示黄色感叹号(此时可以编译运行,但无法调试)。
二、创建一个项目或载入已有项目
2.1创建项目
为简单起见,案例将创建一个Qt的控制台应用,如图4所示:
![](https://img2023.cnblogs.com/blog/1987842/202310/1987842-20231021192456673-1272764428.png)
根据提示依次输入相关信息,在套件选择页面中选择自己构建的套件。本案例将选择MSVC 2015 x64的套件,其为VS2015的编译器,同时对应的opencv也应当是支持VS2015的动态库(什么编译器编译出的动态库就用什么编译器,有不少人是用MinGW,看个人喜好)。接着根据提示进行相关操作即可。
注意:选择MSVC系列编译器需要注意编码问题(针对源文件,如main.cpp等文件),网络有很多相关的解决办法,可自行查找。我认为一个很方便的做法是通过其他文本编辑器(如notepad++)将源文件转为utf-8-bom格式(如图6所示),然后在Qt Creator中重新加载。
![](https://img2023.cnblogs.com/blog/1987842/202310/1987842-20231021192456769-106153195.png)
2.2添加opencv库
第一种方式,采用自动添加库,第二种和方式是直接在pro文件中写LIBS、INCLUDEPATH相关代码,后续复制即可。
采用自动添加库时,右击项目->选择添加库->选择windows、动态库、为debug版本添加‘d’作为后缀->分别选择对应的库文件和include文件夹->依次操作点击完成。
如
库文件路径:H:\Opencv460\opencv\build\x64\vc14\lib
包含路径:H:\Opencv460\opencv\build\include
图7
![](https://img2023.cnblogs.com/blog/1987842/202310/1987842-20231021192456619-1191501123.png)
![](https://img2023.cnblogs.com/blog/1987842/202310/1987842-20231021192456650-1146450886.png)
![](https://img2023.cnblogs.com/blog/1987842/202310/1987842-20231021192456697-2132017390.png)
![](https://img2023.cnblogs.com/blog/1987842/202310/1987842-20231021192456688-2121238881.png)
自此添加完成,自动在pro文件夹添加相关代码,如图13所示。
图13
注意,如果在添加库之前已经进行了构建(或运行),生成了“build-untitled1-Desktop_Qt_5_9_1_MSVC2015_64bit-Debug”文件夹,这通常会导致找不到“opencv.hpp”文件夹等错误,此时需要删除该文件夹重新构建(很多情况下只要是编辑了pro文件,就需要删除该生成文件夹再运行)。
![](https://img2023.cnblogs.com/blog/1987842/202310/1987842-20231021192456630-1478518849.png)
如果未在之前将源文件转为utf-8-bom格式,这将导致中文字符乱码,从而可能导致imread函数读取含中文路径的图片失败等问题。
在一些情况如不能解决可考虑在每个头文件前面添加以下:
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
图15
在一些情况下,点击运行后,界面一直显示如图16所示,往控制台中按回车会关闭并停止运行,该类问题暂不知道什么原因,而再重新创建工程又无该问题。
图16