Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Java BuffereImage加载到Matlab中_Java_Image_Matlab_Bufferedimage - Fatal编程技术网

如何将Java BuffereImage加载到Matlab中

如何将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

我试图从MATLAB中调用一些Java方法,并成功地处理了那些返回字符串、文件等内容的方法。但现在我有了一个返回
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数组。你也应该

  • 使用Java GUI(awt)可视化
  • 在Matlab中创建一个相同大小的3D数组,并在循环中逐个复制所有像素,或
  • 将图像保存到Matlab理解的文件中(例如,
    png
    )并从Matlab加载

  • 对于名为
    jbi
    的Java
    BufferedImage
    ,可以使用
    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]);