函数参数的一个示例验证了效用函数的图像
我昨天在一个原型时,我发现自己写一个小一点的代码很有用,我想知道为什么我从未做过。我想展示给你。它将是一个机会去探索一些MATLAB的最新进展,使有用的功能语法容易写。
我写了一个简单的函数调用
imageSizeInXY
。这个函数接受一个MATLAB图形
图像
对象,并返回它的总宽度和高度的空间x - y坐标轴的单位。
函数= imageSizeInXY (im)
…
结束
(我将显示下面的全面落实。)我用这样的函数。
一个= imread (“peppers.png”);
我= imshow (XData = [1], YData = [1]);
轴在
imageSizeInXY_v1 (im)
但这个函数只适用如果我有捕获图像对象在一个变量中。通常,我叫
imshow
没有输出参数,所以我没有图像对象:
imshow (XData = [1], YData = [1])
我想,它将确定如果我可以打电话
imageSizeInXY
没有输入参数,它就会自动告诉我有关的图像显示在当前图。简要思考这个问题之后,我写了以下几点:
函数= imageSizeInXY (im)
参数
即时通讯(1,1)matlab.graphics.primitive.Image= findimage
结束
…
结束
函数我= findimage
image_objects = imhandles (imgca);
如果isempty (image_objects)
错误(“没有图像对象发现。”);
结束
我= image_objects (1);
结束
让我们看看这个函数的开始。
函数= imageSizeInXY (im)
参数
即时通讯(1,1)matlab.graphics.primitive.Image= findimage
结束
的
参数
块让我们指定约束和函数的输入参数的默认行为。“
(1,1)
“说,一部分输入参数,
即时通讯
,必须有大小
1 \ * 1美元
。换句话说,它必须是一个标量。第二部分,“
matlab.graphics.primitive.Image
”,表明
即时通讯
需要这个类(或可转换)。
MATLAB将自动执行这些大小和类型约束,发出特定的错误消息,如果他们没有得到满足。
![image-size-in-xy-errors.png](http://www.tatmou.com/blogs/steve/files/find_image_code_02.png)
请注意,您可以通过调用MATLAB图形对象的完整类名
类
:
类(im)
“
= findimage
“一部分是用于自动提供一个默认值输入
即时通讯
。这是一个恒定的值或表达式。在这种情况下,
findimage
是一个调用本地函数的表达式,我写了:
函数我= findimage
image_objects = imhandles (imgca);
如果isempty (image_objects)
错误(“没有图像对象发现。”);
结束
我= image_objects (1);
结束
的函数
imgca
和
imhandles
图像处理工具箱工具。这个函数
imgca
返回最近的电流
轴
对象包含一个或更多的图片,
imhandles
返回
图像
对象。
只是我最后几行小心处理的情况下没有
图像
物体被发现,或者有多个地方
图像
中的对象
轴
。
全面实施,包括简单的尺寸计算,如下。
函数= imageSizeInXY (im)
参数
即时通讯(1,1)matlab.graphics.primitive.Image= findimage
结束
pixel_width =程度(im.XData、大小(im.CData 2));
pixel_height =程度(im.YData、大小(im.CData 1));
x1 = im.XData (1)——(pixel_width / 2);
x2 = im.XData(结束)+ (pixel_width / 2);
日元= im.YData (1)——(pixel_height / 2);
y2 = im.YData(结束)+ (pixel_height / 2);
= ((x2 - x1) (y2 - y1)];
结束
函数我= findimage
image_objects = imhandles (imgca);
如果isempty (image_objects)
错误(“没有图像对象发现。”);
结束
我= image_objects (1);
结束
函数num_pixels e =程度(数据)
如果(num_pixels < = 1)
e = 1;
其他的
e =(数据(2)- (1))/ (num_pixels - 1);
结束
结束
现在我不需要记得打电话
imshow
和一个输出参数来使用它。
如果你还没有使用函数参数验证和探索
参数
块MATLAB编写自己的函数,我鼓励你给他们一个尝试。很值得的!
评论
要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。