我正在寻找一种在 OpenCV 中将 RGBA 位图转换为 Mat
的方法。我试过 this , 但输出的图像颜色错误并且上下颠倒。
我使用结构数组来存储位图。
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 有什么方便的方法吗?
最佳答案
OpenCV 的 cv::Mat 使用行主要排序(首先沿着 channel 递增,然后沿着列递增,然后沿着行递增)。因此,(0, 0) 处的像素是图像中最左上角的像素。如果您的 BITMAP 将 (0, 0) 作为左下角,则图像将上下颠倒。通常,OpenCV 更喜欢 channel 的 BGRA 排序。 channel 的重新排序会弄乱颜色。
关于c++ - 如何在 OpenCV 中将 RGBA 数组转换为 Mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39261375/