![](/img/trans.png)
[英]Copying a small image into the camera frame with OpenCV for Android
[英]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.