主要内容

构建图像比较工具

这个例子展示了如何制作一个GUI,在滚动面板中并排显示两个图像,并在位置和放大倍数上同步。

首先,定义一个用于构建应用程序的函数my_image_compare_tool,它附在示例的最后。

在定义了构建应用程序的函数之后,测试应用程序。

我= imread (“flamingos.jpg”);L = rgb2lightness(我);Iedge =边缘(L,“精明”);

在应用程序中显示图像。当你在Overview工具中移动细节矩形或改变一个图像的放大,两个图像都会响应。

my_image_compare_tool(我Iedge);

图概述(我的图像比较工具)包含一个轴对象和其他类型的uipanel, uitoolbar, uimenu对象。轴对象包含线、补丁、图像等8个对象。

图我的图像比较工具包含2个轴对象和其他类型的uipanel, uicontrol对象。axis对象1包含一个image类型的对象。axis对象2包含一个image类型的对象。

应用程序创建函数

my_image_compare_tool函数接受两个图像作为输入参数,并在滚动面板中显示这些图像。自定义工具还包括一个概述工具和一个放大框。注意,该函数抑制了图形窗口中的工具栏和菜单栏,因为可滚动导航与标准MATLAB™图形窗口导航工具不兼容。

为了同步滚动面板,该函数在使用回调的工具和滚动面板API函数之间建立连接。这个函数指定了一个回调函数,在每次放大率改变时执行。指定的函数是setMagnification另一个API滚动面板功能。因此,每当其中一个滚动面板的放大倍数发生变化时,另一个滚动面板也会相应改变其放大倍数。该工具建立了一个类似的连接位置变化。

函数my_image_compare_tool (left_image right_image)%创建数字hFig =图(“工具栏”“没有”...菜单条的“没有”...“名字”“我的图像比较工具”...“NumberTitle”“关闭”...“IntegerHandle”“关闭”);显示左侧图像subplot(121) hImL = imshow(left_image);右显示图像subplot(122) hImR = imshow(right_image);为左边的图像创建一个滚动面板hSpL = imscrollpanel (hFig hImL);集(hSpL,“单位”“归一化”...“位置”,[0 0.1 .5 0.9])为右边的图像创建滚动面板hSpR = imscrollpanel (hFig hImR);集(hSpR,“单位”“归一化”...“位置”,[0.5 0.1 .5 0.9])添加放大盒hMagBox = immagbox (hFig hImL);pos =得到(hMagBox,“位置”);集(hMagBox,“位置”,[0 0 pos(3) pos(4)])%%添加概述工具imoverview (hImL)%%从滚动面板获取apiapiL = iptgetapi (hSpL);apiR = iptgetapi (hSpR);%%同步左右滚动面板apiL.setMagnification (apiR.getMagnification ()) apiL.setVisibleLocation (apiR.getVisibleLocation ())%当左侧滚动面板的放大倍数改变时,%告诉右边的滚动面板apiL.addNewMagnificationCallback (apiR.setMagnification);%当右边滚动面板的放大倍数改变时,%通知左侧滚动面板apiR.addNewMagnificationCallback (apiL.setMagnification);%当左侧滚动面板上的位置改变时,%通知右边滚动面板apiL.addNewLocationCallback (apiR.setVisibleLocation);%当右边滚动面板上的位置改变时,%通知左侧滚动面板apiR.addNewLocationCallback (apiL.setVisibleLocation);结束

另请参阅

||

相关的例子

更多关于