Windows下QT搭建OpenCv环境

来源:互联网 发布:钢结构软件 编辑:程序博客网 时间:2024/05/16 07:35

Windows下QT搭建OpenCv环境


1. 准备

1)OpenCv库文件,头文件;
如果QT用的编译器是MinGW,那么则无法编译.lib后缀的库文件,所以需要准备.a后缀的opencv库文件。opencv244版本带有mingw的库文件,但opencv2410以后则没有了。
这里写图片描述

如果需要用opencv2410以后的版本,可以Cmake进行手动生成mingw所需要的库文件。教程链接:CMake编译opencv教程
本人所编译的opencv2410mingw库文件

2)Qt运行环境

2. 在项目中添加库文件

1)右击项目,选择添加库;
这里写图片描述

2)选择外部库;

3)选择库文件路径:
这里写图片描述

4)选择头文件路径:
这里写图片描述

5)修改选项,去掉“为Debug版本添加-d后缀选项”,因为MinGw编译环境需要的库文件没找到-d后缀的库文件。VC编译的则有-d后缀的库文件。如果不去掉这个选项,在MinGw下Debug编译就会有问题。
这里写图片描述

6)完成前面步骤则成功添加了一个库文件,继续添加库文件可以重复上面的步骤,也可以直接复制-修改-粘贴;后面两个库文件为复制第一个,然后改动库文件名得到($$PWD代表项目所在根目录)。到此添加库文件完成。
这里写图片描述

3包含头文件,使用opencv函数

1)包含头文件

#include "opencv2/opencv.hpp"using namespace cv;//只需包含该头文件及命名空间,则所有opencv的头文件都被包含

2)读取图像,这里开了一个线程不断的读取图像;

void imageshow::run(){    IplImage *img;    char buf[64] = {0};    int i = 0;    while(!isStop)    {        //读取图像;        sprintf(buf,"image/%d.jpg",i);        img = cvLoadImage(buf);        if(!img)        {            //读取失败则跳出循环;            break;        }        i++;        //判断图像的像素坐标原点是左上角或左下角,因为QT图像像素原点为左上角,所以opencv图像原点如果是左下角,则需要转换;        if(img->origin == IPL_ORIGIN_TL)        {        }        else        {            cvFlip(img,img,0);        }        //把opencv的BGR转换成QT的RGB;        cvCvtColor(img, img, CV_BGR2RGB);        emit drawImg(img);    }}

3)显示图像

void Widget::drawImg(IplImage *img){    QImage qtempimg((uchar*)(img->imageData), img->width, img->height ,QImage::Format_RGB888);    //设置label所显示的内容自动适配label的大小;    ui->label->setScaledContents(true);    ui->label->setPixmap(QPixmap::fromImage(qtempimg));    //释放image    cvReleaseImage(&img);}

注意问题

1)编译出错
检查库文件路径是否正确,除了上面说到的添加库的方法,还有其它的方法,例如:

#头文件路径INCLUDEPATH+=   F:\opencv2_4_10\include\opencv\                F:\opencv2_4_10\include\opencv2\                F:\opencv2_4_10\include#库文件路径LIBS+=  F:\opencv2_4_10\lib\libopencv_core2410.dll.a  \        F:\opencv2_4_10\lib\libopencv_highgui2410.dll.a \        F:\opencv2_4_10\lib\libopencv_imgproc2410.dll.a

建议使用第一种方法,这样就不用去记,只需要按照向导完成添加就好。
使用MinGw编译记得在添加的时候把“为debug版本添加-d后缀”选项去掉。

检查头文件路径是否正确,opencv的include文件夹又分为了opencv和opencv2两个子文件夹。

2)图像读取失败

检查读取的路径是否正确,注意在QCreate启动的程序的读取路径和点击.exe启动的读取路径是不同的。

3)把.dll添加到debug或release路径下;

本文相关Demo

0 0
原创粉丝点击