【问题标题】:MATLAB ButtonDownFcnMATLAB ButtonDownFcn
【发布时间】:2013-05-20 14:56:15
【问题描述】:

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

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

  2. 我想允许用户从图像中选择车牌。 我怎样才能做到这一点并保存所选区域的像素?

提前致谢。

【问题讨论】:

    标签: matlab user-interface matlab-deployment


    【解决方案1】:

    解决你的两个问题:

    1. 我猜您正在尝试设置 图形窗口'ButtonDownFcn',这不会按您的预期工作。如果您想在用户单击图像时执行某些操作,则应确保设置 图像'ButtonDownFcn',而不是图形窗口或轴对象。请注意figure property documentation 中的这一行(重点由我添加):

      当指针位于图形窗口中时,只要您按下鼠标按钮时执行,但不在子对象(即 uicontrol、uipanel、axes 或axes 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'。另请注意,如果单击其中一个轴的刻度线标签,则不会显示任何内容。这是因为轴对象有自己的'ButtonDownFcn',它没有设置为任何值。

    2. 如果您有权访问Image Processing Toolbox,则可以使用函数IMFREEHAND 让用户在图像中绘制一个ROI(感兴趣区域)。然后,您可以使用createMask method 创建图像的二进制掩码,其中 ROI 内的像素为 1,ROI 外的像素为 0。

    【讨论】:

      猜你喜欢
      • 2011-09-29
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多