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\opencv24 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_OBJECT11 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 else15 {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)运行结构如下
联系客服