很多时候要用v4l2采集视频帧数据,当点击按钮触发时,保存其中的一帧数据,然后用opencv进行处理。那么就需要将QImage转为IplImage了,我封装了一个简易函数,可以实现此功能,
第一个参数是你的QImage数据帧,是指针类型的;第二个数据是你的IplImage帧数据,要注意调用此函数前要cvCreateImage(cvSize(qimage->width,qimage->height), .........),创建IplImage,然后调用下面的函数就可以了。
void cvxCopyQImage(const QImage *qImage, IplImage *pIplImage) //QImage 转为 Iplimage
{
int x, y;
for(x = 0; x < pIplImage->width; ++x)
{
for(y = 0; y < pIplImage->height; ++y)
{
QRgb rgb = qImage->pixel(x, y);
cvSet2D(pIplImage, y, x, CV_RGB(qRed(rgb), qGreen(rgb), qBlue(rgb)));
}
}
}
参考文章:
http://sealevel2009.is-programmer.com/posts/14551.html(这个比较好)
http://blog.chinaunix.net/uid-22682903-id-1771421.html(这个讲的也不赖!介绍创建IplImage的方法,尽管没用到,但也贴在这!)
http://blog.sina.com.cn/s/blog_8208f4ef0100wemj.html(这个比较复杂,我没采用这个)