分享

Qt5中进行OpenCV开发教程

 oskycar 2013-11-04

Qt中进行OpenCV开发:
1)首先新建一个工程,在.pro工程文件中进行配置:添加OpenCV的头文件目录和库文件路径,具体如下(根据自己OpenCV的安装路径设置)



复制代码

1 INCLUDEPATH += C:\OpenCV2.3.1\build\include 2    C:\OpenCV2.3.1\build\include\opencv  3    C:\OpenCV2.3.1\build\include\opencv2
4 
5 LIBS += C:\OpenCV2.3.1\build\x86\vc9\lib\opencv_highgui231.lib 6     C:\OpenCV2.3.1\build\x86\vc9\lib\opencv_core231.lib  7     C:\OpenCV2.3.1\build\x86\vc9\lib\opencv_imgproc231.lib

复制代码


 


2)以下是一个具体的简单实例——在自定义的Widget中显示以张图片,源码如下:


//------widget.h 



复制代码

 1 #ifndef WIDGET_H
 2 #define WIDGET_H
 3 
 4 #include <QWidget>
 5 #include <QImage>
 6 #include <opencv.hpp>
 7 
 8 class Widget : public QWidget
 9 {
10     Q_OBJECT
11     
12 public:
13     Widget(IplImage *img,QWidget *parent = 0);
14     ~Widget();
15 protected:
16     void paintEvent(QPaintEvent *);
17 private:
18     IplImage *iplImg;
19     QImage *qImg;
20 };
21 
22 #endif // WIDGET_H

复制代码


//------widget.cpp


 



复制代码

 1 #include "widget.h"
 2 #include <QPainter>
 3 Widget::Widget(IplImage *img, QWidget *parent)
 4     : QWidget(parent)
 5 {
 6     qImg = new QImage(QSize(img->width,img->height),QImage::Format_RGB888);
 7     iplImg = cvCreateImageHeader(cvSize(img->width,img->height),8,3);
 8     iplImg->imageData = (char *)qImg->bits();
 9 
10     if(img->origin==IPL_ORIGIN_TL)
11     {
12         cvCopy(img,iplImg,0);
13     }
14     else
15     {
16         cvFlip(img,iplImg,0);
17     }
18     cvCvtColor(iplImg,iplImg,CV_BGR2RGB);
19     resize(img->width,img->height);
20 }
21 
22 void Widget::paintEvent(QPaintEvent *)
23 {
24     QPainter painter(this);
25     painter.drawImage(QPoint(0,0),*qImg);
26 }
27 
28 
29 Widget::~Widget()
30 {
31     cvReleaseImage(&iplImg);
32     delete qImg;
33 }

复制代码


 


//----main.cpp



复制代码

 1 #include "widget.h"
 2 #include <QApplication>
 3 
 4 int main(int argc, char *argv[])
 5 {
 6     QApplication a(argc, argv);
 7 
 8     IplImage *img = cvLoadImage("test.jpg",1);
 9 
10     if(img)
11     {
12         Widget *w = new Widget(img);
13         w->show();
14     }
15 
16     int re =  a.exec();
17     cvReleaseImage(&img);
18 
19 
20     return re;
21 }

复制代码




3)运行结构如下


 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多