Чтобы проиллюстрировать, как использовать коллбэки, чтобы установить связи, требуемые для взаимодействий между инструментами, этот пример использует API Панели Прокрутки, чтобы создать простой графический интерфейс пользователя сравнения изображений. Этот инструмент пользователя отображает два изображения рядом друг с другом в панелях прокрутки, которые синхронизируются в месте и увеличении. Инструмент пользователя также включает инструмент Overview и поле Magnification.
function my_image_compare_tool(left_image, right_image) % Create the figure hFig = figure('Toolbar','none',... 'Menubar','none',... 'Name','My Image Compare Tool',... 'NumberTitle','off',... 'IntegerHandle','off'); % Display left image subplot(121) hImL = imshow(left_image); % Display right image subplot(122) hImR = imshow(right_image); % Create a scroll panel for left image hSpL = imscrollpanel(hFig,hImL); set(hSpL,'Units','normalized',... 'Position',[0 0.1 .5 0.9]) % Create scroll panel for right image hSpR = imscrollpanel(hFig,hImR); set(hSpR,'Units','normalized',... 'Position',[0.5 0.1 .5 0.9]) % Add a Magnification box hMagBox = immagbox(hFig,hImL); pos = get(hMagBox,'Position'); set(hMagBox,'Position',[0 0 pos(3) pos(4)]) %% Add an Overview tool imoverview(hImL) %% Get APIs from the scroll panels apiL = iptgetapi(hSpL); apiR = iptgetapi(hSpR); %% Synchronize left and right scroll panels apiL.setMagnification(apiR.getMagnification()) apiL.setVisibleLocation(apiR.getVisibleLocation()) % When magnification changes on left scroll panel, % tell right scroll panel apiL.addNewMagnificationCallback(apiR.setMagnification); % When magnification changes on right scroll panel, % tell left scroll panel apiR.addNewMagnificationCallback(apiL.setMagnification); % When location changes on left scroll panel, % tell right scroll panel apiL.addNewLocationCallback(apiR.setVisibleLocation); % When location changes on right scroll panel, % tell left scroll panel apiR.addNewLocationCallback(apiL.setVisibleLocation);
Комплекты инструментальных средств комплексное взаимодействие между панелями прокрутки со всего несколькими вызовами, чтобы Прокрутить API-функции Панели. В коде инструмент задает функцию обратного вызова, чтобы выполнить каждый раз изменения увеличения. Заданной функцией является setMagnification
API-функция другой панели прокрутки. Таким образом, каждый раз, когда изменения увеличения в одной из панелей прокрутки, другая панель прокрутки изменяет свое увеличение, чтобы соответствовать. Комплекты инструментальных средств подобная связь для изменений положения.
Следующая фигура является диаграммой последовательности, которая показывает взаимодействие между двумя панелями прокрутки, настроенными инструментом сравнения для обоих изменений в увеличении и местоположении.
Прокрутите связи панели в инструменте сравнения пользовательского изображения
Чтобы использовать инструмент сравнения изображений, передайте его два изображения в качестве аргументов.
left_image = imread('peppers.png'); right_image = edge(left_image(:,:,1),'canny'); my_image_compare_tool(left_image,right_image);
Инструмент создает окно фигуры, отображая два изображения рядом друг с другом, в отдельных панелях прокрутки. Пользовательские выдерживают сравнение, инструмент также включает инструмент Overview и поле Magnification. Когда вы перемещаете прямоугольник детали в инструмент Overview или изменяете увеличение в одном изображении, оба изображения отвечают.