imshow()用C ++中的OpenCV 3.2产生奇怪的结果

时间:2017-05-08 19:19:16

标签: c++ opencv

我从我的Kinect接收RGB数据并尝试将其放入OpenCV矩阵中。数据保存在" src":

Mat matrixImageRGBA(w, h, CV_8UC4);
memcpy(matrixImageRGBA.data, src, sizeof(byte) * w * h * 4);

然而,当我使用" imshow"要查看图像,它会水平平铺四次。我使用以下命令:

imshow("Window", matrixImageRGBA);
waitKey(500);

有没有人知道问题可能在这里?这让我疯了。

谢谢!

1 个答案:

答案 0 :(得分:3)

您向前wh。根据文档,构造函数将height作为第一个参数:

Mat (int rows, int cols, int type)      

另外,我建议使用这个构造函数:

Mat(int rows, int cols, int type, void *data, size_t step=AUTO_STEP)

而不是复制到data字段(因为在每行末尾没有使用填充,请使用AUTO_STEP的默认step