如何在OpenCV中将RGBA数组转换为Mat

时间:2016-09-01 01:26:11

标签: c++ opencv bitmap

我找到了一种在OpenCV中将RGBA位图转换为Mat的方法。我尝试了this,但输出图像的颜色错误而且是颠倒的。

我使用struct数组来存储位图。

typedef struct {
    unsigned char r,g,b,a;
} BITMAP;
BITMAP* input = (BITMAP*)malloc(width*height*sizeof(BITMAP));
...
Mat image(height, width, CV_8UC4, input);

有没有人知道在OpenCV中将Bitmap转换为Mat的方便方法?

1 个答案:

答案 0 :(得分:2)

OpenCV的cv :: Mat使用行主要排序(首先沿着通道递增,然后沿着列递增,然后沿着行递增)。因此,(0,0)处的像素是图像中最左上角的像素。如果您的BITMAP左下角为(0,0),则图像会颠倒显示。通常,OpenCV更喜欢BGRA对频道的排序。频道的重新排序将搞乱着色。