首页 > 代码库 > qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题
qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题
在用opencv处理图片显示在qt label上的时候遇到不是问题
1. qt上要用qimage形式才能显示
IplImage转成 Qimage
彩色图像转换
IplImage *fram;
QImage image((const uchar*)fram->imageData, fram->width, fram->height, QImage::Format_RGB888);
在用opencv二值化以后你再转换发现出现label里面显示多个画面而且还有彩色的怎么回事
这时候得换参数
QImage resimg(( uchar*)res->imageData, res->width, res->height, QImage::Format_Indexed8);
参数换后就好了说明QImage::Format_Indexed8就是用来转换灰色图像的
2. yuv摄像头采集的数据图片转换成rgb后生成Qimage我要用opencv处理要转换成lplimage格式这时候就可以这样来写
//转换格式QImage转IplImage
width = frame->width();
height = frame->height();
Size.height = height;
Size.width = width;
lplImage * image = cvCreateImage(Size, IPL_DEPTH_8U, 3);
for (int y = 0; y < height; ++y)
{
for (int x = 0; x < width; ++x)
{
QRgb rgb = frame->pixel(x, y);
cvSet2D(image, y, x, CV_RGB(qRed(rgb), qGreen(rgb), qBlue(rgb)));
}
}
最后image就是iplimage格式的。你可以把上面的自己封装下每次直接调用很方便。
qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题