如何将Java BuffereImage加载到Matlab中
我试图从MATLAB中调用一些Java方法,并成功地处理了那些返回字符串、文件等内容的方法。但现在我有了一个返回如何将Java BuffereImage加载到Matlab中,java,image,matlab,bufferedimage,Java,Image,Matlab,Bufferedimage,我试图从MATLAB中调用一些Java方法,并成功地处理了那些返回字符串、文件等内容的方法。但现在我有了一个返回BufferedImage的方法,MATLAB对此还没有问题。但是如何在MATLAB中可视化这个buffereImage?或者至少把它转换成矩阵 我从MATLAB调用了以下方法(在我的Java类中): MATLAB代码: bufferedImage = pictureObject.getBufferedImage MATLAB显示了这一点 pictureObject= Buffer
BufferedImage
的方法,MATLAB对此还没有问题。但是如何在MATLAB中可视化这个buffereImage
?或者至少把它转换成矩阵
我从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透明度=1 transIndex=-1 has alpha=false isAlphaPre=false ByteInterleavedRaster:width=640 height=480#numDataElements 1 dataOff[0]=0
我正在尝试将上述内容转换为MATLAB中的可视化内容。
BuffereImage
不是MATLAB理解的原始Java对象,也没有简单的方法将其转换为MATLAB数组。你也应该
png
)并从Matlab加载对于名为
jbi
的JavaBufferedImage
,可以使用getData
和getPixels
来获取MATLAB数组
使用创建测试buffereImage
(可惜没有java2d2im
):
上述方法适用于灰度“cameraman.tif”图像(pixelBits=8
)
对于彩色“peppers.png”图像(
pixelBits=24
):
或
有关更多技巧,请参阅。我的回答是否满足了您的需要?它给了我错误:发生了Java异常:Java.lang.OutOfMemoryError:Java.awt.image.SampleModel.getPixels(未知源)的Java堆空间位于Java.awt.image.Raster.getPixels(未知源)
>> 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)');
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]);