Qt中进行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 }
|
|