1

MATLABで「光学式文字認識」のプロジェクトがあります。あなたの助けが必要です。

  1. ユーザーが画像上でマウスを押したときにどのように認識しますか?ButtonDownFcnでこれを実行しようとしていますが、メッセージを印刷するだけでもメッセージは印刷されません。

  2. ユーザーが画像からナンバープレートを選択できるようにしたい。どうすればこれを行い、選択した領域のピクセルを保存できますか?

前もって感謝します。

4

1 に答える 1

11

2つの質問に対処する:

  1. フィギュアウィンドウ'ButtonDownFcn'のを設定しようとしていると思いますが、期待どおりに機能しません。ユーザーが画像をクリックしたときに何かをしたい場合は、FigureウィンドウやAxesオブジェクトではなく、画像のを設定していることを確認する必要があります。図のプロパティドキュメントのこの行に注意してください(私が強調したもの):'ButtonDownFcn'

    ポインタがFigureウィンドウ内にあるときにマウスボタンを押すたびに実行されますが、子オブジェクト(つまり、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'));
    

    'ButtonDownFcn'画像の内側と外側をクリックすると、それぞれが異なるオブジェクトを呼び出すため、異なるメッセージが表示されることに注意してください。いずれかの軸の目盛りラベルをクリックしても、何も表示されないことにも注意してください。これは、axesオブジェクトに独自の'ButtonDownFcn'が設定されていないためです。

  2. Image Processing Toolboxにアクセスできる場合は、関数IMFREEHANDを使用して、ユーザーに画像にROI(関心領域)を描画させることができます。次に、このcreateMaskメソッドを使用して、ROIの内側のピクセルに1、ROIの外側のピクセルに0を含む画像のバイナリマスクを作成できます。

于 2010-12-28T16:05:23.707 に答える