gpt4 book ai didi

java - OpenCV 相机图像显示偏蓝

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:39 25 4
gpt4 key购买 nike

我正在使用以下代码从相机获取图像,但相机图像显示的颜色不同。

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;
}

enter image description here

最佳答案

也许您的图像是 RGB 类型而不是 BRG 类型?在那种情况下,你会交换红色和蓝色。尝试将 TYPE_3BYTE_BGR 更改为 TYPE_3BYTE_RGB

[编辑] 抱歉,我只在 OpenCV 的 Python 方面。发生的事情是您不小心切换了 channel B 和 R(图像矩阵的第 1 层和第 3 层),您需要将其切换回来。必要时在矩阵中交换。

该链接可能有帮助:Converting BufferedImage to Mat in opencv

[EDIT2] 看看下面 Micka 的评论

关于java - OpenCV 相机图像显示偏蓝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36875035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com