- openCV编译安装-MinGW-Windows10-Qt😱
- @[toc]
- 1、准备工作😲
- 2、解压🤣
- 3、Cmake编译🥺
- 4、测试OpenCV环境🥱
- 5、效果演示😀
- 6、编译好的OpenCV开发包
更多精彩内容 |
---|
👉个人内容分类汇总 👈 |
- CMake:下载最新版本即可
- openCV:下载任意版本,可以下载源码或者官方编译好的VS版(其中也带有源码),我下载的是opencv-3.4.16
- Qt版本:5.12.12
- 编译版本:MinGW-64
- 编译好的安装包运行后会自解压到当前路径下的opencv文件夹中,如下图所示,其中build文件夹为官方已经编译好的,sources为源码,或者直接下载源码压缩包解压
opencv-3.4.16.zip
;
-
创建一个build文件夹,打开安装好的CMake软件,将源码文件夹中的CMakeLists.txt拖到Cmake中,然后点击Browse Build将路径设置为刚才创建的build。
-
点击Configure,选择
MinGW Makefiles
,勾选Specift native compilers
,然后点击Next;
- 选择编译需要使用的**gcc和g++**路径,这里因为编译的是MinGW-64版本,所以我选择的路径就是:
D:/Qt/Qt5.12.12/Tools/mingw730_64/bin/gcc.exe
D:/Qt/Qt5.12.12/Tools/mingw730_64/bin/g++.exe
- 设置好路径后点击Finish,这时可能会报错:
Error in configuration process, project files may be invalid
,这只要将CMAKE_MAKE_PROGRAM设置mingw32-make.exe的路径就可以了(注意是mingw-64版本的,不要选错了);
- 设置好mingw32-make.exe的路径后,点击 Configure按键,可能会提示cc1.exe或cc1plus.exe程序运行找不到libwinpthread-1.dll;
- 这个很好解决,就是cc1plus.exe这个程序运行缺少库,首先打开我们的神器Everything,输入运行的程序名称和缺少的库名称,找到对应位置,可能会发现有很多,找到和cc1plus.exe最接近的就可以;
- 然后把动态库复制到cc1plus.exe文件路径下,然后就不会报错了,然后等待CMake加载一会;
- 可以选择勾选BUILD_opencv_world,这样编译的所有的库将会生成一个opencv_world*.lib,方便使用时打包,不勾选将会生成多个库文件。
- 再点击一次Configure,全部变白后就可以点击Grenerate就可以在build文件夹下生成编译需要的Makefile;
- 然后点击打开cmd窗口,进入到build文件夹下,使用qt MinGW-64路径下的
mingw32-make.exe
进行编译,网上有的人直接输入make或者mingw32-make进行编译,那是自己修改过环境的,如果直接安装Qt后没有修改环境变量那直接输入make或者mingw32-make会显示找不到,这时就需要输入mingw32-make.exe的绝对路径;D:\Qt\Qt5.12.12\Tools\mingw730_64\bin\mingw32-make.exe -j4
,注意是mingw64路径下的make;- 设置好后直接回车开始编译,时间有的长;
- 编译完成后,输入
D:\Qt\Qt5.12.12\Tools\mingw730_64\bin\mingw32-make.exe install
将编译好的库打包;
- 等待执行完成后,在build文件夹下会生成一个install文件夹,这个文件夹下的所有内容就是编译好的OpenCV;
- 将install 文件夹拷贝到E:/lib文件夹下,重命名为OpenCV_MinGW(这个不必要,可以放任意路径,不用重命名也可以);
-
创建一个qt工程,编译器选择与编译opencv相同的编译器,这里使用的是MinGW64
-
右键工程,选择添加库,点击下一步,
- 点击浏览,选择
E:\lib\OpenCV_MinGW\x64\mingw\lib\libopencv_world3416.dll.a
文件;- 平台勾选
Windows
; - 取消勾选
为debug版本添加'd'作为后缀
; - 然后点击下一步;
- 平台勾选
- 会在.pro文件中生成下列三行代码;
win32: LIBS += -L$$PWD/../../lib/OpenCV_MinGW/x64/mingw/lib/ -llibopencv_world3416.dll
INCLUDEPATH += $$PWD/../../lib/OpenCV_MinGW/x64/mingw
DEPENDPATH += $$PWD/../../lib/OpenCV_MinGW/x64/mingw
- 将
/64/mingw
改为include
;
win32: LIBS += -L$$PWD/../../lib/OpenCV_MinGW/x64/mingw/lib/ -llibopencv_world3416.dll
INCLUDEPATH += $$PWD/../../lib/OpenCV_MinGW/include
DEPENDPATH += $$PWD/../../lib/OpenCV_MinGW/include
-
在pro文件中添加
DESTDIR = $$PWD/../bin
,编译后的可执行程序会输出到bin文件夹中; -
添加头文件
#include
- 添加命名空间
using namespace cv;
- 输入如下代码就可以显示图片了
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
Mat image = imread("E:/tp/img/1.png");
imshow("image", image);
}
Widget::~Widget()
{
delete ui;
}
- 编译完成后肯定是会显示程序异常结束,这是因为缺少opencv动态库;
- 将编译好的OpenCV库中的
libopencv_world3416.dll
拷贝到测试程序的可执行程序路径下,再编译就正常了。
🙄🙄🙄🙄🙄🙄🙄🙄🙄
下载地址
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)