用户在MATLAB中定义的函数

时间:2009-06-16 12:54:12

标签: matlab image

我需要为imread图像写一个函数并将其转换为灰度。这是对的:

function trial()

O = imread('m1.png');
G = rgb2gray(O);
imwrite(G,'s','jpg');

end

还是有更好的方式来写它?

4 个答案:

答案 0 :(得分:5)

你走在正确的轨道上,但我同意Dan你应该添加输入参数以使其更普遍可用。每次要使用时都必须更改硬编码的文件名是不理想的。

如果此功能是为其他人设计的,或者即使只是为了您自己,我建议您添加H1 linehelp 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)

实际上,你的函数有点无用,而且可能只是一个脚本,因为函数没有任何参数。

你不需要在文件的末尾结束 - 结束是为了结束循环,条件等。