opencv Mat 中保存的 data, 8uc3 是 bgr 序列,8uc4 是 bgra 序列。而安卓中,生成 Bitmap ARGB_8888 或从 Bitmap ARGB_8888 获取的 byte 数组都是 rgba 序列数据,接口调用如果传 opencv 读取的 byte 数组时需要换一下 r/b 位置。
处理图片像素计算量较大,一般写入 jni 处理。以下是相关代码。
1 | Bitmap bitmap = ...; // ARGB_8888 format |
1 | cv::Mat M1(3, 3, CV_8UC3); // bgr |
1 | // 8uc3 to bitmap bytes |