java - 如何将 Java BufferedImage 加载到 Matlab 中

标签 java image matlab bufferedimage

我正在尝试从 MATLAB 调用一些 Java 方法,并且已经成功地调用了那些返回字符串、文件等内容的方法。但是现在我有一个返回 BufferedImage 的方法,而 MATLAB 没有YET 有问题。但是如何在 MATLAB 中可视化此 BufferedImage 呢?或者至少将其转换为矩阵?

我从 MATLAB 调用了以下方法(在我的 Java 类中):

MATLAB 代码:

bufferedImage = pictureObject.getBufferedImage 

MATLAB 显示了这个...

pictureObject =

BufferedImage@9d7ae3: type = 13 IndexColorModel: #pixelBits = 8 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@eee0e3 transparency = 1 transIndex = -1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 640 height = 480 #numDataElements 1 dataOff[0] = 0

我正试图将上面的东西转换成在 MATLAB 中可视化的东西。

最佳答案

对于名为 jbi 的 Java BufferedImage,您可以使用 getDatagetPixels 获取 MATLAB 数组。

im2java2d 创建一个测试 BufferedImage (可惜没有 java2d2im):

>> I = imread('cameraman.tif');
>> jbi = im2java2d(I)
jbi =
BufferedImage@7ed666f9: type = 0 IndexColorModel: #pixelBits = 8 numCompon<snip>

转换回来:

nrows = jbi.getHeight; ncols = jbi.getWidth;
matImg = jbi.getData.getPixels(0,0,ncols,nrows,[]);
matImg = uint8(reshape(matImg,nrows,ncols)');

以上适用于灰度“cameraman.tif”图像(pixelBits = 8)。


对于颜色“peppers.png”图像(pixelBits = 24):

data = jbi.getData.getPixels(0,0,ncols,nrows,[]);
matImg = permute(reshape(data,3,ncols,nrows),[3 2 1]);

或者

data = reshape(typecast(jbi.getData.getDataStorage, 'uint8'), [], ncols, nrows);
matImg = permute(data,[3 2 1]);

参见 this MathWorks answer更多技巧。

关于java - 如何将 Java BufferedImage 加载到 Matlab 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22823129/

相关文章:

java - JavaScript 如何将未加引号的纯表达式识别为 RegExp 对象?

image - 在 Keras 中检查验证结果显示只有 50% 是正确的。明显随机

javascript - 如何获取 CSS 位置 : fixed for a background image to work properly?

java - 需要分析一组包含0和正整数的 vector

matlab - 默认在后台绘制 Matlab 图形

matlab - 如何在不使用 MATLAB 的情况下打开 .mat 文件?

java - 将整个相对布局变成一个按钮

java - 从 jar 读取 txt 文件失败,但读取图像有效

java - 安装 Parquet 工具

css - Angular 4 - 以 45 度为步长旋转图像