这是一个利用OpenCV读取一张图片然后用Qt生成窗口display出来。做的主要是IplImage到QImage的转换。大部分参考了这个人的博客(http://leohart.net/site/comments/convert_opencv_iplimage_to_qt_qimage/)
基本用法就是:
1)声明这个类,传入图片路径到构造函数中;
2)用getQImage函数获得QImage,然后就可以用到Qt的东西中。
#include <QtCore> #include <QtGui>
#include "cv.h" #include "highgui.h"
class QCvImage{
private: IplImage* cvBGRImg; IplImage* cvRGBImg;
public: QCvImage() {
}
QCvImage(char* imgPath) { cvBGRImg = cvLoadImage(imgPath, true); cvRGBImg = NULL; }
QImage* getQImage(void) { if(cvBGRImg == NULL) return NULL;
cvRGBImg = cvCloneImage(cvBGRImg); cvCvtColor(cvBGRImg, cvRGBImg, CV_BGR2RGB);
uchar* imgData = (uchar*)(cvRGBImg->imageData); QImage* qimg = new QImage(imgData, cvRGBImg->width, cvRGBImg->height, QImage::Format_RGB888);
return qimg; }
~QCvImage() { cvReleaseImage(&cvBGRImg); cvReleaseImage(&cvRGBImg); }
}; |