[英]MATLAB ButtonDownFcn
我在MATLAB中有一個“光學字符識別”項目,需要您的幫助:
我如何識別用戶何時在圖像上按下鼠標? 我試圖用ButtonDownFcn做到這一點,但是即使我只是打印消息,消息也不會被打印。
我想允許用戶從圖像中選擇車牌。 我該怎么做並保存所選區域的像素?
提前致謝。
解決您的兩個問題:
我猜想您正在嘗試設置圖形窗口的'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'
,未將其設置為任何值。
如果您有權使用圖像處理工具箱 ,則可以使用功能IMFREEHAND來使用戶在圖像中繪制ROI(感興趣區域)。 然后,您可以使用createMask
方法創建圖像的二進制蒙版,其中ROI內的像素為1,ROI內的像素為0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.