Ofi*_* A. 1 matlab user-interface matlab-deployment
我在MATLAB中有一个"光学字符识别"项目,我需要你的帮助:
当用户在图像上按下鼠标时如何识别?我试图用ButtonDownFcn做这个,但即使我只是打印消息,消息不打印.
我想允许用户从图像中选择牌照.我该怎么做并保存所选区域的像素?
提前致谢.
gno*_*ice 11
解决你的两个问题:
我猜你想设置'ButtonDownFcn'
的的数字窗口,这将不工作,你如何期望.如果您想在用户点击的图像上做一些事情,你应该确保你设置'ButtonDownFcn'
的的形象,而不是图窗口或轴对象.请注意图属性文档中的这一行(由我添加的重点):
在指针位于图形窗口中时按下鼠标按钮但不在子对象(即uicontrol,uipanel,axes或axes子对象)上执行时执行.
这就是为什么你必须为'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'));
Run Code Online (Sandbox Code Playgroud)
请注意,图像内部和外部的单击是如何显示不同的消息,因为每个消息都调用'ButtonDownFcn'
另一个对象.另请注意,如果单击其中一个轴的刻度线标签,则不显示任何内容.这是因为axes对象有自己的'ButtonDownFcn'
,没有设置为任何东西.
如果您可以访问图像处理工具箱,则可以使用IMFREEHAND功能让用户在图像中绘制ROI(感兴趣区域).然后,您可以使用该createMask
方法创建图像的二进制掩码,其中ROI内的像素为1,ROI外的像素为零.