最近在研究opencv,刚好opencv4发布和QT5.12发布,两者都是稳定版本,网上有很多其他版本介绍,以为很简单,结果还是费了不少功夫。
1. 下载OPECV4.0
直接到官网https://opencv.org/下载
2.VS2015
社区版(个人免费):
http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB464C/vs2015.com_chs.iso
专业版:
http://download.microsoft.com/download/B/8/9/B898E46E-CBAE-4045-A8E2-2D33DD36F3C4/vs2015.pro_chs.iso
企业版:
http://download.microsoft.com/download/B/8/F/B8F1470D-2396-4E7A-83F5-AC09154EB925/vs2015.ent_chs.iso
测试专业版:
http://download.microsoft.com/download/0/9/5/095317BD-41B4-4D71-AAE8-C2D1D1033B92/vs2015.testpro_chs.iso
Visual Studio Professional 2015
Key: HMGNV-WCYXV-X7G9W-YCX63-B98R2
Visual Studio Enterprise 2015
Key: HM6NR-QXX7C-DFW2Y-8B82K-WTYJV
Visual Studio Enterprise 2015
Key: 2XNFG-KFHR8-QV3CP-3W6HT-683CH
3. opencv4整理剔除不必要的文件---!!!取vc15目录下对应的文件,因为QT5.12/OPENCV4,均使用的VS2017的编译的。
4. 下载QT5.12及配置
1)官网下载QT5.12
2) 新建一个QT工程,在*.Pro中增加如下配置
INCLUDEPATH += D:\OpenCV\opencv4_cfg
DEPENDPATH += D:\OpenCV\opencv4_cfg
win32:CONFIG(debug, debug|release): {
LIBS += -LD:\OpenCV\opencv4_cfg -lopencv_world400d
}
else:win32:CONFIG(release, debug|release): {
LIBS += -LD:\OpenCV\opencv4_cfg -lopencv_world400
}
5.解决rc.exe缺失链接问题
安装完成之后,新建了一个QT界面程序,编译之后出现链接错误:
LINK : fatal error LNK1158: 无法运行“rc.exe”
1
解决方案:
把C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x86这个文件夹下面的 rc.exe和rcdll.dll复制到
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin这个文件夹下面
然后在重新编译运行就可以了!
6. 测试验证:
创建一个qt X64程序。
1)pro中增加
INCLUDEPATH += D:\OpenCV\opencv4_cfg
DEPENDPATH += D:\OpenCV\opencv4_cfg
win32:CONFIG(debug, debug|release): {
LIBS += -LD:\OpenCV\opencv4_cfg -lopencv_world400d
}
else:win32:CONFIG(release, debug|release): {
LIBS += -LD:\OpenCV\opencv4_cfg -lopencv_world400
}
2.增加一段代码:
#include "mainwindow.h" #include <QApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); Mat image=imread("E:\\opencv\\images\\rice.png"); namedWindow("My"); imshow("My",image); VideoCapture cap("E:\\opencv\\images\\video.long.mjpg.avi"); if(!cap.isOpened()) { return -1; } Mat frame; while(1) { cap>>frame; if(frame.empty()) break; imshow("当前视频",frame); if(waitKey(30) >=0) break; } return a.exec(); }
运行效果:图像和视频