- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个带有两个轴的 GUI。第一个轴具有低分辨率图像。
我想做的是使用 IMRECT 在第一个轴上选择一个区域,然后在第二个轴上将该区域显示为高分辨率图像,同时在我移动 IMRECT 矩形时不断更新。
我能够做到这一点的唯一方法是使用一个带有 0.1 停顿的“for 循环”,它只运行一两分钟,同时我使用 IMRECT 选择和更改 ROI,非常麻烦。
我的想法是使用一个函数,只要鼠标在第一个轴内移动就会运行,并在该函数中使用 plotting 和 getPosition 命令。但是,我不确定如何编写这样的函数(触发轴内的鼠标移动)。
如有任何帮助,我们将不胜感激!
最佳答案
一般来说,您应该为您的imrect
分配一个回调。例如:
x = imrect();
x.addNewPositionCallback( @(x)(disp('The rect has changed')))
回调应该使用匿名函数获取额外的参数,例如图像和第二个轴。
我写了一个小代码片段来做你想要的。你应该添加边界检查,因为我没有打扰。当您移动矩形时,它会更新 CData
而不是运行 imshow
,因此非常流畅。
function Zoomer
figure();
highResImage = imread('peppers.png');
lowResImage = imresize(highResImage,0.5);
a1 = subplot(2,1,1);
a2 = subplot(2,1,2);
imshow(lowResImage,'Parent',a1);
initialPosition = [10 10 100 100];
lowResRect = imrect(a1,initialPosition);
lowResRect.addNewPositionCallback( @(pos)Callback(pos,a2,highResImage));
Callback( initialPosition , a2, highResImage);
end
function Callback(position,axesHandle, highResImage)
position = position * 2;
x1 = position(1);
y1 = position(2);
x2 = position(1) + position(3);
y2 = position(2) + position(4);
highResThumbnail = highResImage( round(y1:y2),round(x1:x2),:);
if isempty( get(axesHandle,'Children'))
imshow(highResThumbnail,'Parent',axesHandle);
else
imHandle = get(axesHandle,'Children');
oldSize = size(get(imHandle,'CData'));
if ~isequal(oldSize, size(highResThumbnail))
imshow(highResThumbnail,'Parent',axesHandle);
else
set( imHandle,'CData', highResThumbnail);
end
end
end
关于Matlab:使用 IMRECT 选择的 ROI 的实时绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12408601/
我正在寻找一个简单的 Python 实用程序或模块: 我可以给它一张图片,它会弹出一个 GUI 窗口,让用户在图片内画一个框 绘制盒子后,返回盒子的坐标 MATLAB 用户会意识到我要求的是 imre
对于我的项目,我有很多图片需要提取 ROI。当我的项目开始时,我想要显示一张图片,然后用户选择他/她想要的投资返回率。函数imrect似乎正在这样做。我试图获取矩形的坐标,一旦它被拖动或调整大小。问题
我有一个带有两个轴的 GUI。第一个轴具有低分辨率图像。 我想做的是使用 IMRECT 在第一个轴上选择一个区域,然后在第二个轴上将该区域显示为高分辨率图像,同时在我移动 IMRECT 矩形时不断更新
我是一名优秀的程序员,十分优秀!