我在 MATLAB 中有一个“光学字符识别”项目,我需要你的帮助:
当用户在图像上按下鼠标时,我如何识别?我尝试使用 ButtonDownFcn 执行此操作,但即使我只是打印消息,也不会打印消息。
我想让用户从图像中选择车牌。我怎样才能做到这一点并保存所选区域的像素?
提前致谢。
我在 MATLAB 中有一个“光学字符识别”项目,我需要你的帮助:
当用户在图像上按下鼠标时,我如何识别?我尝试使用 ButtonDownFcn 执行此操作,但即使我只是打印消息,也不会打印消息。
我想让用户从图像中选择车牌。我怎样才能做到这一点并保存所选区域的像素?
提前致谢。
解决你的两个问题:
我猜您正在尝试设置图形窗口'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'
,它没有设置任何东西。
如果您有权访问图像处理工具箱,则可以使用函数IMFREEHAND让用户在图像中绘制 ROI(感兴趣区域)。然后,您可以使用该createMask
方法创建图像的二进制掩码,其中 ROI 内的像素为 1,ROI 外的像素为 0。