Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 使用QImage和OpenCV显示图像_Qt_Image Processing_Opencv_Qt5_Qimage - Fatal编程技术网

Qt 使用QImage和OpenCV显示图像

Qt 使用QImage和OpenCV显示图像,qt,image-processing,opencv,qt5,qimage,Qt,Image Processing,Opencv,Qt5,Qimage,可能重复: 我在用Qt显示图像时遇到了一个奇怪的问题…我用OpenCV读取了一个视频帧,并将其从BGR转换成RGB video >> frameOrg; cvtColor(frameOrg,frameOrg,CV_BGR2RGB); 然后我使用裁剪样式在图像上选择一个ROI frame = frameOrg(roi); 我通过信号/插槽将选定的ROI发送到一个小部件进行显示。显示器的paintEvent()使用 image = QImage((const unsigned ch

可能重复:

我在用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宽度和高度的组合时,我会得到一个奇怪的显示,如下所示。。。 原始图像

所选ROI的图像

我需要做一些修改吗?windows 7在显示方面是否有问题?使用
imshow()
显示时,相同的ROI将正确显示…任何人都可以帮助我..提前

有效的实际代码

image = QImage((const unsigned char*)frame.data,frame.cols,
               frame.rows,frame.step,QImage::Format_RGB888);

这可能是一个填充问题。您没有说明
frame
变量的类型,但是
IPLImage
有一个
widthStep
字段。为QImage使用此构造函数

QImage ( uchar * data, int width, int height, int bytesPerLine, Format format )

并将
widthStep
作为
bytesPerLine
参数传递。

这可能是一个填充问题。您没有说明
frame
变量的类型,但是
IPLImage
有一个
widthStep
字段。为QImage使用此构造函数

QImage ( uchar * data, int width, int height, int bytesPerLine, Format format )

并将
widthStep
作为
bytesPerLine
参数传递。

是否缺少+1?行
i
总是左移
i
列,这只是前一行缺少1列的传播。这并不总是发生……对于某些组合,只有我得到了如此奇怪的结果……然后明确指出其中的一些组合。我已经说过了。@karlphillip这个问题显然不是那个问题的重复。它所处理的问题与这里描述的完全不同。a+1不是缺失了吗?行
i
总是左移
i
列,这只是前一行缺少1列的传播。这并不总是发生……对于某些组合,只有我得到了如此奇怪的结果……然后明确指出其中的一些组合。我已经说过了。@karlphillip这个问题显然不是那个问题的重复。它处理的问题与这里描述的完全不同。+1我同意,这通常看起来像4字节对齐问题+1我同意,这通常看起来像4字节对齐问题