很多时候要用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(这个比较复杂,我没采用这个)
分享到:
相关推荐
这是 OpenCV与QT开发时常有的一些转换函数。 比如: (1) 将QImage图片转为opecv的qimage格式 IplImage *Widget::QImage_to_IplImage(const QImage * qImage) (2). 将opecv的图片转为qimage格式 QImage *Widget::...
在OpenCV库中,处理图像数据时,有几种不同的数据结构可供选择,包括`Mat`、`CvMat`和`IplImage`。这些数据结构各有特点,适应不同的应用场景和编程需求。在实际开发中,有时需要在它们之间进行转换以实现功能的兼容...
接着,你需要用OpenCV读取图片,使用`cv::imread()`函数,然后将OpenCV的IplImage或Mat对象转换为Qt的QImage或QPixmap,最后设置到QGraphicsView的QGraphicsScene中。 播放视频部分,你需要使用OpenCV的...
在Linux环境下,结合OpenCV和Qt库开发多媒体应用是一个常见的需求。本教程主要涉及如何使用OpenCV在Ubuntu系统上读取AVI视频,并通过Qt框架将其显示出来。OpenCV是一个强大的计算机视觉库,而Qt则是一个功能丰富的跨...
由于Qt和OpenCV对图像的处理方式不同,我们需要将OpenCV的IplImage或Mat对象转换为Qt的QImage或QPixmap。例如: ```cpp void MainWindow::on_pushButton_clicked() { QString filePath = QFileDialog::...
综上所述,基于OpenCV的实时图像采集与远程监控系统结合了OpenCV的图像处理能力、QT库的GUI功能以及Socket网络通信技术,通过多线程处理,实现了摄像头的实时监控和远程图像传输。这个系统在智能家居、安防监控等...
在MFC(Microsoft Foundation Classes)应用中,OpenCV是一个常用库来处理图像和视频。然而,在尝试使用旧的代码或教程时,可能会遇到一个名为`CvvImage`的类,这个类在较新的OpenCV版本中不再提供。`CvvImage`在...
写的一个小函数从Iplimage或cv::Mat转为qt所支持的Qimage,然后可以通过QPixmap::fromImage()函数转为QPixmap,接着就可以通过label或其他东西显示了,函数支持3或1通道,rgb或gray以外的色彩空间得注意,1和2通道有...
这通常涉及到将OpenCV的IplImage或cv::Mat格式的图像数据转换为QT的QImage或QPixmap格式,然后设置到Label组件上,以实现图像的实时显示。 总的来说,ImageLab 0.2.0项目展示了C++、QT和OpenCV的协同工作,为用户...