如何为Matlab的imread添加独特的图像格式,以及Matlab的拖放?

Joh*_*ohn 7 matlab file imread

我们有许多内部图像格式,我在Matlab中处理.我有所有这些的读/写功能.为了特异性,请考虑TGA图像格式,其中有文件交换图像阅读器.

Matlab对imread支持的图像格式有合理的拖放支持.

也就是说,您可以从资源管理器拖动图像,将其放在"工作区"窗格中,Matlab将读取图像,然后将其复制到工作区中.

我希望能够添加拖放支持,并且imread支持TGA文件.(例如,imread对文件名有很好的自动完成功能,tga_read_image没有.)

Cri*_*ngo 3

从Tommaso 的回答开始,我在 MATLAB 路径上创建了以下 M 文件:

function out = openics(filename)
img = readim(filename);
if nargout==1
   out = img;
else
   [~,varname] = fileparts(filename);
   disp(['assigning into base: ',varname])
   assignin('base',varname,img);
end
Run Code Online (Sandbox Code Playgroud)

将 ICS 文件拖放到 MATLAB 的命令窗口中会在命令行上显示以下内容:

>> uiopen('/Users/cris/newdip/examples/cermet.ics',1)
assigning into base: cermet
Run Code Online (Sandbox Code Playgroud)

查看:

>> whos cermet
  Name          Size             Bytes  Class        Attributes
  cermet      256x256            65714  dip_image              
Run Code Online (Sandbox Code Playgroud)

阅读代码uiopen(您只需键入edit uiopen)会显示此调用open使用文件名,然后调用openics文件名且不使用输出参数。

您还可以输入

img = open('/Users/cris/newdip/examples/cermet.ics');
Run Code Online (Sandbox Code Playgroud)

调用openics图像并将其加载到变量中img

注 1:我使用 ICS 因为我没有任何 TGA 图像可供测试。ICS 是一种显微镜图像文件格式。

注2:是DIPimagereadim中的一个函数

注 3:这很酷,我以前从未尝试过将文件拖放到 MATLAB 上。:)