OpenCV Java RGB BGR

时间:2015-06-01 15:04:52

标签: java opencv image-processing video

我尝试了几次使用OpenCV在Java中获得普通视频但是我一直在切换颜色:我的意思是当我运行程序时蓝色在视频中是橙色的。

这是我的代码:

public class Mat2Image {

    BufferedImage img;
    Mat mat = new Mat();
    byte[] dat;
    int elemSize;
    public Mat2Image() {
    }
    public Mat2Image(Mat mat) {
        getSpace(mat);
    }
    public void getSpace(Mat mat) {
        this.mat = mat;
        elemSize=(int)mat.elemSize();
        int w = mat.cols(), h = mat.rows();
        if (dat == null || dat.length != w * h * elemSize)
            dat = new byte[w * h * elemSize];

              if (img == null || img.getWidth() != w || img.getHeight() != h
            || img.getType() != BufferedImage.TYPE_3BYTE_BGR)
           img = new BufferedImage(w, h,BufferedImage.TYPE_3BYTE_BGR);

        }
        BufferedImage getImage(Mat mat){
            getSpace(mat);
//        byte b;
//        for(int i=0;i<dat.length;i=i+3){
//           b=dat[i];
//           dat[i]=dat[i+2];
//           dat[i+2]=b;
//        }
            mat.get(0, 0, dat);
            img.getRaster().setDataElements(0, 0, 
                               mat.cols(), mat.rows(), dat);
        return img;
    }
    static{
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    }

}

1 个答案:

答案 0 :(得分:0)

来自page的评论部分,其代码非常相似:comment