【问题标题】:imshow() producing weird results with OpenCV 3.2 in C++imshow() 在 C++ 中使用 OpenCV 3.2 产生奇怪的结果
【发布时间】:2017-10-06 22:19:05
【问题描述】:

我正在从我的 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);

有人知道这里可能出现什么问题吗?快把我逼疯了。

谢谢!

【问题讨论】:

  • 您如何获取 Kinect 数据?听起来好像不是您指定的格式。
  • w 和 h 在 Mat 构造函数中的顺序错误,如果 w 是宽度,h 是高度。请参阅stackoverflow.com/questions/25642532/… 了解可能的原因。

标签: c++ opencv


【解决方案1】:

你有 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)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多