我正在从我的 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);
有没有人知道这里可能有什么问题?这让我发疯。
谢谢!
最佳答案
w
和 h
倒过来了。根据文档,构造函数将 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
).
关于c++ - imshow() 在 C++ 中使用 OpenCV 3.2 产生奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43855674/