情况1:PC机上
(1)使用QT Creator建立一个空白QT工程,在工程文件中加入:
INCLUDEPATH += /usr/local/include/opencvLIBS += `pkg-config opencv --cflags --libs`
(2)添加源文件mian.cpp,主要是实现Iplmage到QImage的转换
#include <iostream>
#include <cstring>
#include <qimage.h>
#include <QVector>
#include <QtGui>
#include <cv.h>
#include <highgui.h>
using namespace std;
IplImage *QImageToIplImage(const QImage * qImage)
{
int width = qImage->width();
int height = qImage->height();
CvSize Size;
Size.height = height;
Size.width = width;
IplImage *charIplImageBuffer = cvCreateImage(Size, IPL_DEPTH_8U, 1);
char *charTemp = (char *) charIplImageBuffer->imageData;
for (int y = 0; y < height; ++y)
{
for (int x = 0; x < width; ++x)
{
int index = y * width + x;
charTemp[index] = (char) qGray(qImage->pixel(x, y));
}
}
return charIplImageBuffer;
}
/* Usage:
QImage *qi = IplImageToQImage(iplCurrentImage, &data);
QPixmap pix = QPixmap(*qi);
delete qi;
if(data)
free(data);
cvReleaseImage(&iplCurrentImage);
*/
QImage *IplImageToQImage(const IplImage * iplImage, uchar **data, double mini, double maxi)
{
uchar *qImageBuffer = NULL;
int width = iplImage->width;
/* Note here that OpenCV image is stored so that each lined is 32-bits aligned thus
* explaining the necessity to "skip" the few last bytes of each line of OpenCV image buffer.
*/
int widthStep = iplImage->widthStep;
int height = iplImage->height;
switch (iplImage->depth)
{
case IPL_DEPTH_8U:
if (iplImage->nChannels == 1)
{
/* Open