我有这样的代码,一个OpenCV的图像转换为位图:转换OpenCV的图像GDI的位图不起作用取决于图像大小
void processimage(MAT imageData)
{
Gdiplus::Bitmap bitmap(imageData.cols,imageData.rows,stride, PixelFormat24bppRGB,imageData.data);
// do some work with bitmap
}
它运作良好时,图像的尺寸为2748 X 3664但我正在处理一个尺寸为1374 X 1832的图像,但它不起作用。
错误是无效的参数(2)。
我检查,可以确认:在
2748 * 3664:
- 的cols = 2748个
- 行= 3664
- 跨度= 8244
- 图像仍在继续。
在1374 X 1832
- COLS = 1374个
- 行= 1832
- 跨距= 4122
- 图像是继续进行。
因此,一切似乎都是正确的,但它会产生错误。
这是什么问题,我该如何解决?
编辑
根据解释为什么我无法创建位图的答案。我终于实现了它这样:
Mat newImage;
cvtColor(imageData, newImage, CV_BGR2BGRA);
Gdiplus::Bitmap bitmap(newImage.cols,newImage.rows,newImage.step1(), PixelFormat32bppRGB,newImage.data);
那么有效,我将输入图像每个像素4个字节,然后使用它转换为位图。
所有学分到罗杰罗兰德他的答案。
+1这是一个有效的解决方法。 –