1

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

  1. 当用户在图像上按下鼠标时,我如何识别?我尝试使用 ButtonDownFcn 执行此操作,但即使我只是打印消息,也不会打印消息。

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

提前致谢。

4

1 回答 1

11

解决你的两个问题:

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

    每当您在指针位于图形窗口中但不在子对象(即 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. 如果您有权访问图像处理工具箱,则可以使用函数IMFREEHAND让用户在图像中绘制 ROI(感兴趣区域)。然后,您可以使用该createMask方法创建图像的二进制掩码,其中 ROI 内的像素为 1,ROI 外的像素为 0。

于 2010-12-28T16:05:23.707 回答