如何将 RGB32 格式的 QImage 转换为 OpenCV::mat?
Posted
技术标签:
【中文标题】如何将 RGB32 格式的 QImage 转换为 OpenCV::mat?【英文标题】:How can I convert a QImage of format RGB32 to OpenCV::mat? 【发布时间】:2013-07-23 13:10:26 【问题描述】:我有一个 RGB32 格式的 QImage 当我这样做时:
cv::Mat depthMat(depthImg.height(),depthImg.width(),CV_8UC3,(uchar*)depthImg.bits(),depthImg.bytesPerLine());
我得到了左边的图像。我实际上应该得到右边的图像。
【问题讨论】:
你不能将 QImage 从 RGB32 转换为 RGB888 吗?这段代码应该适用于格式之王......或尝试使用 CV_32SC3 而不是 CV_8UC3(不确定......) 不!从 RGB32 转换为 RGB888 会改变颜色! @Poko 而且,使用 CV_32SC3 也不起作用! 好的。对不起。很高兴你解决了它。 【参考方案1】:好的!我想到了! RGB32 有 8 位 R、8 位 G、8 位 B 和 8 位 Alpha。它本质上是RGBA。所以,我们可以这样使用:
cv::Mat depthMat(depthImg.height(),depthImg.width(),CV_8UC4,(uchar*)depthImg.bits(),depthImg.bytesPerLine());
【讨论】:
以上是关于如何将 RGB32 格式的 QImage 转换为 OpenCV::mat?的主要内容,如果未能解决你的问题,请参考以下文章