我是Matlab的新手,我在阅读图像和处理目录等事情时遇到了一些问题。我有一个任务,我要写一个脚本,将非灰度图像转换为灰度(例如,如果图像是真彩色,转换为灰度)。
这是我的代码:
img = uigetfile('*');
imgx = imfinfo(img);
imgx.ColorType
if imgx.ColorType == 'truecolor'
img = imread(img);
img = rgb2gray(img);
end
然而,我最终得到了以下几点:
"仅当图像与脚本"
位于同一文件夹中时才有效我意识到我的脚本仅适用于MATLAB路径中的文件夹中的图像,因此我不知道这与他所说的内容是否是一个单独的问题,或者是否是这样的问题。他的意思是什么我认为他希望能够选择计算机上的任何图像以便能够阅读和执行操作,但我不知道如何处理这个问题。任何人都可以帮助我吗?
答案 0 :(得分:2)
问题是img = uigetfile('*')
仅将文件名作为字符串返回。要在matlab文件夹以外的文件夹中处理图片,您需要提取完整路径。您可以使用以下方法执行此操作:
[fileName, folderName] = uigetfile('*');
img=fullfile(folderName, fileName);
imgx = imfinfo(img);
其余代码应该在这个小小的更改之后才能运行