我需要为imread
图像写一个函数并将其转换为灰度。这是对的:
function trial()
O = imread('m1.png');
G = rgb2gray(O);
imwrite(G,'s','jpg');
end
还是有更好的方式来写它?
答案 0 :(得分:5)
你走在正确的轨道上,但我同意Dan你应该添加输入参数以使其更普遍可用。每次要使用时都必须更改硬编码的文件名是不理想的。
如果此功能是为其他人设计的,或者即使只是为了您自己,我建议您添加H1 line,help text和输入类型检查。例如:
function make_grayscale(inFile,outFile)
% MAKE_GRAYSCALE Converts an RGB image to grayscale
% MAKE_GRAYSCALE(INFILE,OUTFILE) converts a truecolor RGB image stored in
% INFILE to a grayscale intensity image and writes it to OUTFILE.
if ~ischar(inFile) || ~ischar(outFile),
error('File name arguments must be character strings!');
end
...(rest of function)...
end
很多人低估了这些东西的用处。当你将一个函数放置几个月时,很容易忘记你是如何编写它来表现的。帮助提醒您(或其他人)如何使用它,错误检查有助于在您做错时提供有用的信息。此外,拥有描述性H1行可让您选择使用LOOKFOR查找您可能忘记其名称的函数。
答案 1 :(得分:2)
该解决方案有效,但您可以通过接受参数使其更灵活:
function trial(inputName, outputName)
o = imread(inputName);
g = rgb2gray(o);
imwrite(g, outputName, 'jpg')
这样,您可以批量运行文件。
答案 2 :(得分:1)
此外,您可能希望让函数返回一些内容,以便以后可以使用它。
function out = trial(imageName)
O = imread(imageName);
G = rgb2gray(O);
%imwrite(G,'s','jpg');
out = G;
end
或者你喜欢的任何功能。这样,下次需要灰度时,无需从磁盘调用它。在调用函数的代码中,您可以更轻松地使用它。
x = trial('image.png')
在大多数情况下,可能比写入光盘更容易,因为我想你会立即使用灰度图像。
答案 3 :(得分:0)
实际上,你的函数有点无用,而且可能只是一个脚本,因为函数没有任何参数。
你不需要在文件的末尾结束 - 结束是为了结束循环,条件等。