在OpenCV中将`BufferedImage`转换为`Mat`
如何将a转换BufferedImage
为Mat
in OpenCV
?
我正在使用JAVA包装器OpenCV
(不是 JavaCV )。由于我是新手,因此在OpenCV
理解Mat
工作方式方面存在一些问题。
我想做这样的事情。(根据Ted W.的回复):
BufferedImage image = ImageIO.read(b.getClass().getResource("Lena.png"));int rows = image.getWidth();
int cols = image.getHeight();
int type = CvType.CV_16UC1;
Mat newMat = new Mat(rows, cols, type);
for (int r = 0; r < rows; r++) {
for (int c = 0; c < cols; c++) {
newMat.put(r, c, image.getRGB(r, c));
}
}
Highgui.imwrite("Lena_copy.png", newMat);
这行不通。Lena_copy.png
只是一张尺寸正确的黑色图片。
回答:
我还试图做同样的事情,因为需要将经过处理的图像与两个库结合在一起。而我一直试图做的是把byte[]
中Mat
,而不是RGB值。而且有效!所以我做的是:
1,转换BufferedImage
为字节数组
byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
2.然后,如果您将类型设置为 则只需将其置于Mat
image_final.put(0, 0, pixels);
也可以尝试做与此答案相反
以上是 在OpenCV中将`BufferedImage`转换为`Mat` 的全部内容, 来源链接: utcz.com/qa/420798.html