Qt+OpenCV环境搭建

最近想学习的两样东西,Qt和OpenCV,之前都有短暂使用过,但是用的不多。本文从环境搭建开始写起。

本文使用的软件版本及下载地址

Windows7_ultimate_x64
Qt 5.11.1 官方下载地址
CMake 3.12.1 官方下载地址
OpenCV 3.4.3 官方下载地址

Qt


Qt在安装过程中需要选择编译器,本文使用C++作为开发语言,编译器可以选择MinGW或者MSVC,MSVC需要安装相应版本的Visual Studio作为支持,本文选择MinGW,在安装时要勾选相应版本的MinGW。


CMake

OpenCV是使用c/c++编写的,官方网站提供的版本Qt不能直接使用,需要使用CMake重新编译Qt可用的版本。安装时注意勾选“Add CMake to the system PATH for all users”。


OpenCV

安装直接运行就可以。安装完成后开始进行编译。

添加MinGW环境变量

在Path下增加MinGW的路径(根据自己的Qt安装路径有所不同,添加环境变量时注意用 ; 分隔),配置完成需要重启电脑才能生效。

C:\Qt\Qt5.11.1\5.11.1\mingw53_32\bin
C:\Qt\Qt5.11.1\Tools\mingw530_32\bin
编译OpenCV

运行cmake-gui.exe,分别选择OpenCV的源码路径和编译输出路径



点击Configure,进行配置如下,然后next



配置编译器路径,然后finish
C: C:/Qt/Qt5.11.1/Tools/mingw530_32/bin/gcc.exe
C++: C:/Qt/Qt5.11.1/Tools/mingw530_32/bin/g++.exe

第一次configure完成后,勾选 WITH_QT 和 WITH_OPENGL,再次点击configure



第二次configure完成后, 将CMAKE_BUILD_TYPE修改为 Release,再次点击configure



第三次configure完成后,点击generate,生成结束后,打开cmd,进入编译输出目录,执行编译指令(-j 表示多线程工作,电脑是几核的CPU,后面的参数就可以设为多少,可以节省编译时间)
d:
cd OpenCV
cd build-Qt
mingw32-make -j 4
mingw32-make install

编译过程中如果遇到类似这样的错误

... windres.exe: unknown option -- W ...

可以在配置Cmake时将 ENABLE_PRECOMPILED_HEADERS 关闭,重新进行编译。


编译过程中如果遇到类似这样的错误

 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope 

可以修改OpenCV的源文件,在cap_dshow.cpp文件中搜索

#include "DShow.h"

在这行代码前增加

#define NO_DSHOW_STRSAFE

然后重新编译可以解决。


编译过程中如果遇到类似这样的错误

using invalid field '{anonymous}::ComPtr<T>::p'

可以在Cmake配置中,将 WITH_MSFS 关闭,然后重新编译可以解决。


编译过程中如果遇到类似这样的错误

 ‘nullptr’ was not declared in this scope

可以在Cmake配置中,将 ENABLE_CXX11 打开,然后重新编译可以解决。


编译成功后,将编译生成的库添加到系统环境变量中,在Path中增加(根据自己的编译路径)

D:\OpenCV\build-Qt\install\x86\mingw\bin

测试Qt+OpenCV环境

新建一个QWindow项目,名为TestOpenCV,修改项目配置文件TestOpenCV.pro,在文件末尾增加文件包含路径及所需库文件

INCLUDEPATH += D:\OpenCV\build\include

LIBS += D:\OpenCV\build-Qt\bin\libopencv_core343.dll
LIBS += D:\OpenCV\build-Qt\bin\libopencv_highgui343.dll
LIBS += D:\OpenCV\build-Qt\bin\libopencv_imgcodecs343.dll
LIBS += D:\OpenCV\build-Qt\bin\libopencv_imgproc343.dll
LIBS += D:\OpenCV\build-Qt\bin\libopencv_features2d343.dll
LIBS += D:\OpenCV\build-Qt\bin\libopencv_calib3d343.dll

修改mainwindow.cpp文件如下

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // read an image
    cv::Mat image = cv::imread("d://1.jpg", 1);
    // create image window named "My Image"
    cv::namedWindow("My Image");
    // show the image on window
    cv::imshow("My Image", image);
}

MainWindow::~MainWindow()
{
    delete ui;
}

运行成功后环境搭建成功。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 最近在东软睿道实训搞一个车牌识别系统,所用材料为Qt+opencv+EasyPR,从配环境到成功运行历时几天颇为艰...
    Moonsmile阅读 17,798评论 3 29
  • 此处的说明在Windows 7 SP1上进行了测试。 不过,它也适用于任何其他相对现代版本的Windows操作系统...
    很优秀的你阅读 1,380评论 0 1
  • @selector 是 Objective-C 时代的一个关键字,它可以将一个方法转换并赋值给一个 SEL 类型,...
    wangwenju阅读 344评论 0 0
  • 人生若只如初见。 ——题记 这个深秋的城市,街道又铺满了银杏。娟子一如既往,...
    假如风来过阅读 373评论 0 0
  • 我开始过两种喜欢 一个是谈天说地 一个是胡言乱语 一个是甜言蜜语 一个是反唇相讥 前者我一见钟情 后者只觉有趣而已...
    prudencer阅读 440评论 0 3