JAVA + OPENCV 对bgra四通道转bgr三通道图片
由于opencv内部方法进行bgra2bgr的转换存在bug,所以需要人工纠正,重写算法进行操作。参考了python转换算法。
具体JAVA转换算法如下:
public Mat bgra2Bgr(Mat image){
if(image.channels()<=3){
return image;
}
// 分离出来的彩色通道数据
List<Mat> mv = new ArrayList<>();
// 分离色彩通道
Core.split(image, mv);
// 获取图片每个通道数据
Mat b = mv.get(0);
Mat g = mv.get(1);
Mat r = mv.get(2);
Mat a = mv.get(3);
// 把 所有通道的矩阵的值转换成float类型
Mat commonB = Mat.ones(image.rows(),image.cols(),CvType.CV_64F);
for (int i=0; i<b.rows(); i++){
for (int j=0; j<b.cols(); j++){
double [] ok = b.get(i,j);
commonB.put(i,j,(float)ok[0]);