繁体   English   中英

MATLAB ButtonDownFcn

[英]MATLAB ButtonDownFcn

我在MATLAB中有一个“光学字符识别”项目,需要您的帮助:

  1. 我如何识别用户何时在图像上按下鼠标? 我试图用ButtonDownFcn做到这一点,但是即使我只是打印消息,消息也不会被打印。

  2. 我想允许用户从图像中选择车牌。 我该怎么做并保存所选区域的像素?

提前致谢。

解决您的两个问题:

  1. 我猜想您正在尝试设置图形窗口'ButtonDownFcn' ,这将无法按您期望的那样工作。 如果要在用户单击图像时执行某些操作,则应确保设置的是图像'ButtonDownFcn' ,而不是图形窗口或轴对象。 请注意图形属性文档中的这一行(我添加了重点):

    每当指针在图形窗口中但不在子对象(即uicontrol,uipanel,axes或axiss child)上方时,只要您按鼠标按钮,便会执行

    这就是为什么必须为每个要为其工作的对象设置一个'ButtonDownFcn'的原因。 将其设置为图形窗口将不会使其对图形中的每个对象自动工作。 这是为图形和图像对象设置'ButtonDownFcn'的示例:

     img = imread('peppers.png'); %# Load a sample image hFigure = figure; %# Create a figure window hImage = image(img); %# Plot an image set(hFigure,'ButtonDownFcn',... %# Set the ButtonDownFcn for the figure @(s,e) disp('hello')); set(hImage,'ButtonDownFcn',... %# Set the ButtonDownFcn for the image @(s,e) disp('world')); 

    请注意,在图像的内部和外部单击如何显示不同的消息,因为每个对象都为不同的对象调用'ButtonDownFcn' 还要注意,如果单击其中一个轴的刻度标记,则不会显示任何内容。 这是因为axes对象具有自己的'ButtonDownFcn' ,未将其设置为任何值。

  2. 如果您有权使用图像处理工具箱 ,则可以使用功能IMFREEHAND来使用户在图像中绘制ROI(感兴趣区域)。 然后,您可以使用createMask方法创建图像的二进制蒙版,其中ROI内的像素为1,ROI内的像素为0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM