如何将格式为 RGB32 的 QImage 转换为 OpenCV::mat?

P.C*_*.C. 1 qt opencv qimage

我有一个 RGB32 格式的 QImage 当我这样做时:

cv::Mat depthMat(depthImg.height(),depthImg.width(),CV_8UC3,(uchar*)depthImg.bits(),depthImg.bytesPerLine());
Run Code Online (Sandbox Code Playgroud)

我得到左边的图像。我实际上应该得到右边的图像。 在此处输入图片说明

P.C*_*.C. 5

好的!我想到了!RGB32有8位R、8位G、8位B和8位Alpha。它本质上是RGBA。所以,我们可以使用这个:

cv::Mat depthMat(depthImg.height(),depthImg.width(),CV_8UC4,(uchar*)depthImg.bits(),depthImg.bytesPerLine());
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明