Вопрос

У меня есть проект «Оптического распознавания персонажей» в Matlab, и мне нужна ваша помощь:

  1. Как я могу распознать, когда пользователь нажимает на мышь на изображении? Я пытаюсь сделать это с Buttondownfcn, но даже когда я просто печатаю сообщение, сообщение не напечатано.

  2. Я хочу позволить пользователю выбрать номерной знак из изображения. Как я могу сделать это и сохранить пиксели выбранной области?

заранее спасибо.

Это было полезно?

Решение

Обращаясь к двум вашим вопросам:

  1. Я предполагаю, что вы пытаетесь установить 'ButtonDownFcn' принадлежащий фигура окна, что не сработает, как вы ожидаете. Если вы хотите что -то сделать, когда пользователь нажимает на изображение, вы должны убедиться, что вы настраиваете 'ButtonDownFcn' принадлежащий изображение, а не окно фигуры или объект оси. Обратите внимание на эту линию в Рисунок документация о свойстве (Акцент добавлен мной):

    Выполняется всякий раз, когда вы нажимаете кнопку мыши, пока указатель находится в окне фигуры, но не над детским объектом (то есть, Uicontrol, Uipanel, оси или оси ребенка).

    Вот почему вы должны установить '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' для другого объекта. Также обратите внимание, что если вы нажмете на метку Tick Mark по одной из оси, ничего не отображается. Это потому, что у объекта Axes есть свой собственный 'ButtonDownFcn', который не был на что -либо.

  2. Если у вас есть доступ к Набор инструментов обработки изображений Вы можете использовать функцию Imfreehand Чтобы пользователь рисовал ROI (область интереса) на изображении. Тогда вы можете использовать createMask метод Чтобы создать бинарную маску изображения с пикселями внутри ROI и нулей для пикселей за пределами рентабельности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top