【发布时间】:2013-01-24 17:09:21
【问题描述】:
可能重复:
Fastest method to convert IplImage IPL_DEPTH_32S to QImage Format_RGB32
我在使用 Qt 显示图像时遇到了一个奇怪的问题...我使用 OpenCV 读取视频帧并将其从 BGR 转换为 RGB。
video >> frameOrg;
cvtColor(frameOrg,frameOrg,CV_BGR2RGB);
然后我使用裁剪样式在图像上选择一个 ROI..
frame = frameOrg(roi);
我通过信号/插槽将选定的 ROI 发送到小部件进行显示.. 显示使用的 paintEvent()
image = QImage((const unsigned char*)frame.data,frame.cols,
frame.rows,QImage::Format_RGB888);
QRectF target(0.0,0.0,image.width(),image.height());
QRectF source(0.0,0.0,image.width(),image.height());
QPainter painter(this);
painter.drawImage(target,image,source);
但是,每当我选择 ROI 的奇数值宽度和高度的某种组合时,我都会得到一个奇怪的显示,如下所示... 原图
所选投资回报率的图像
我需要做一些修改吗? windows 7显示有问题吗?使用imshow() 显示时相同的 ROI 显示正确...任何人帮助我..thanx 提前...
有效的实际代码
image = QImage((const unsigned char*)frame.data,frame.cols,
frame.rows,frame.step,QImage::Format_RGB888);
【问题讨论】:
-
某处不是缺少 +1 吗?行
i总是左移i列,这只是前一行缺少1 列的传播。 -
这种情况并不总是发生......仅对于某些组合,我得到了如此奇怪的结果......
-
然后明确指出其中一些组合。
-
我已经讨论过这个here。
-
@karlphillip 这个问题显然不是那个问题的重复。它处理的是与这里描述的完全不同的问题。
标签: qt image-processing opencv qt5 qimage