簡體   English   中英

OpenCV 相機圖像顯示藍色

[英]OpenCV camera image shows bluish

我正在使用以下代碼從相機獲取圖像,但相機圖像顯示的顏色不同。

public Mat mat = new Mat();
private BufferedImage img;
private byte[] dat;

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

        public BufferedImage getImage(Mat mat) {
            getSpace(mat);
            mat.get(0, 0, dat);
            img.getRaster().setDataElements(0, 0, mat.cols(), mat.rows(), dat);
            return img;
        }

在此處輸入圖片說明

也許您的圖像是 RGB 類型而不是 BRG? 在那種情況下,您將交換紅色和藍色。 嘗試將TYPE_3BYTE_BGR更改為TYPE_3BYTE_RGB

[編輯] 抱歉,我只在 OpenCV 的 Python 方面。 發生的情況是您不小心切換了通道 B 和 R(圖像矩陣的第 1 層和第 3 層),您需要將其切換回來。 如有必要,請在矩陣中交換它。

該鏈接可能有幫助: Converting BufferedImage to Mat in opencv

[EDIT2] 看看下面 Micka 的評論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM