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

标签 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);

有没有人知道这里可能有什么问题?这让我发疯。

谢谢!

最佳答案

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 ).

关于c++ - imshow() 在 C++ 中使用 OpenCV 3.2 产生奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43855674/

相关文章:

c++ - 无法在支持 bz2 的 Linux 上构建 boost

C++ 处理 pig

opencv - 在opencv(或其他)中拼接航拍的技术

c++ - Opencv:将平面图图像转换为数据模型

c++ - 如何在opencv c++中有效清除 vector <Mat>

c++ - 对来自网络摄像头的图像进行阈值处理

c++ - 如何从类中获取成员函数的返回类型?

javascript - 如何将 char* 数组传递给 emscripten 编译代码?

opencv - pytesseract已安装但缺少?

opencv - OpenCV 中 HSV 颜色空间的文档