此示例显示了如何制作在在位置和放大倍率上同步的滚动面板中并排在侧面显示两个图像的GUI。
首先,定义构建应用程序的函数。此示例使用函数调用my_image_compare_tool.
,在该示例的末尾附上。
定义构建应用程序的函数后,测试应用程序。获得两个图像。
我= imread('flamingos.jpg');l = rgb2lightness(i);IEDGE = EDGE(L,'Canny');
在应用程序中显示图像。在概述工具中移动详细信息矩形或在一个图像中更改放大倍数时,这两个图像都会响应。
my_image_compare_tool(i,iededed);
这my_image_compare_tool.
函数接受两个图像作为输入参数,并在滚动面板中显示这些图像。自定义工具还包括一个概述工具和一个放大框。注意,该函数抑制了图形窗口中的工具栏和菜单栏,因为可滚动导航与标准MATLAB™图形窗口导航工具不兼容。
要同步滚动面板,该功能使工具之间的连接使用回调和滚动面板API函数。该函数指定每次执行放大倍数的回调函数。指定的函数是setMagnification.
API功能的其他滚动面板。因此,每当汇幅在一个涡旋板中的一个变化时,另一个滚动面板将其汇集变化以匹配。该工具设置了类似的连接以进行位置变化。
功能my_image_compare_tool(left_image,right_image)%创建图hfig = figure('工具栏'那'没有任何'那......菜单条的那'没有任何'那......'姓名'那'我的图像比较工具'那......'numbertitle'那'离开'那......'integerhandle'那'离开');%显示左图像子图(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 = get(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(apile.setmagnification);左滚动面板上的位置更改时%,%通知右侧滚动面板apile.addnewlocationCallback(apir.setvisiblelocation);%右侧滚动面板上的位置更改时,%通知左滚动面板apiR.addNewLocationCallback (apiL.setVisibleLocation);结尾
Immagbox.
|Imoverview.
|imscrollpanel