2017-05-08 99 views
0

我正在从我的Kinect获取RGB数据并尝试将它放入OpenCV矩阵中。该数据是在“SRC”举行:imshow()在C++中产生奇怪的结果OpenCV 3.2

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

然而,当我使用“imshow”看到图像,它是横向平铺四个时间。我正在使用以下命令:

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

有没有人有任何想法可能在这里的问题?这让我疯狂。

谢谢!

+0

如何获得Kinect数据?这听起来像不是你指定的格式。 – molbdnilo

+0

如果w是宽度而h是高度,则w和h在Mat构造函数中的顺序是错误的。有关可能的原因,请参阅http://stackoverflow.com/questions/25642532/opencv-pointx-y-represent-column-row-or-row-column/25644503#25644503。 – Micka

回答

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场(因为你没有使用每行末尾的填充使用step的默认AUTO_STEP)。