【发布时间】:2016-08-20 21:04:46
【问题描述】:
我正在使用以下代码从相机获取图像,但相机图像显示的颜色不同。
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;
}
【问题讨论】:
-
看起来红色和蓝色通道互换了(绿灯仍然是绿色,但蓝光是红色,红色区域是蓝色)
-
你的代码很奇怪。 “img”是全局变量吗?
-
@Micka 不,它不公开,我现在也包含了这些字段。