当前位置: 首页 > 面试题库 >

在OpenCV中将`BufferedImage`转换为`Mat`

仲孙逸明
2023-03-14
问题内容

如何将a转换BufferedImageMatin 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.然后,如果您将类型设置为 CV_8UC3, 则只需将其置于Mat 即可

image_final.put(0, 0, pixels);

编辑: 也可以尝试做与此答案相反



 类似资料:
  • 问题内容: 我一直在尝试将a转换为…而且我没有运气。 我有一个预先存在的ImageIcon,对于存在的大量BufferedImage操作,需要将其转换为Buffered Image。 我发现了几种方法,但是所有方法都占用大量CPU。 问题答案: 有什么问题:

  • 问题内容: 我有一个图像文件的Data-URL,必须将其传递给另一个函数。从Data-URL到BufferedImage的路径必须是一个byteArray。 我的方法如下: 问题是,它总是抛出UnknownImageFormatException异常,这意味着inputImage为null,这意味着ImageIO.read无法识别图像类型。 我使用ImageIO.getReaderFormatNa

  • 问题内容: 如何在Java中转换为? 请注意,现有答案显然是不正确的,因为它使用方法和,如果尚未加载图像(根据定义,它是一个异步对象),则可以返回。 请提供更正确的答案,或提供更多证明现有答案已经正确的证据。 问题答案: 如果这对您很重要,则可以使用“等待”来加载图像,然后就不必担心提供 看看JavaDocs了解更多详细信息 我不想添加任何GUI,我只需要下载图像或失败 好吧,如果您“需要下载”该

  • 本文向大家介绍如何使用Java将OpenCV Mat对象转换为BufferedImage对象?,包括了如何使用Java将OpenCV Mat对象转换为BufferedImage对象?的使用技巧和注意事项,需要的朋友参考一下 如果尝试使用OpenCV imread()方法读取图像,它将返回Mat对象。如果要使用AWT / Swings窗口显示生成的Mat对象的内容,则需要将Mat对象转换为类java

  • 问题内容: 在StackOverflow上已经存在类似此链接的问题,并且可接受的答案是“广播”: 在我的程序中,我尝试: 不幸的是,我得到运行时错误: sun.awt.image.ToolkitImage无法转换为java.awt.image.BufferedImage 显然,投射不起作用。 问题是:将Image转换为BufferedImage的正确方法是(或存在)什么? 问题答案: 从Java游

  • 问题内容: 我正在使用servlet上传图像。为了执行调整大小的操作,我将InputStream转换为BufferedImage。现在我想将其保存在mongoDB中。因为据我所知,我是mongoDB的新手,所以GridFS采用InputStream。 那么,有什么方法可以将BufferedImage转换为InputStream吗? 问题答案: 您需要使用该类将BufferedImage保存为,然后