所以我在Matlab中创建了一个图像直方图,用户可以使用imrect来选择所需的区域。
我希望能够从用户选择的区域中找到最小y值。
这是我到目前为止所拥有的:
handles.pet_hist_rect = imrect(gca);
[xmin ymin width height] = getPosition(handles.pet_hist_rect);
xdata = get(findobj(gcf,'type','patch'),'xdata');
ydata = get(findobj(gcf,'type','patch'),'ydata');
我不确定如何从[xmin,xmin + width]范围中提取最小y值(来自ydata)
提前致谢!
答案 0 :(得分:1)
我认为你的代码首先没有运行,因为你试图将getPosition(1x4数组)的输出分配给另一个数组的单个条目,这是不起作用的。在纠正之后
position = getPosition(handles.pet_hist_rect);
您现在可以将xmin作为位置(1),将ymin作为位置(2)访问,依此类推。 现在,ymin = position(2)已经是你所要求的(最少y),但我不确定,我能帮你到这里。无需查询图形属性。如果这不是你想要的,你将不得不重新解释一下这个问题。
编辑:如果任何直方图计数为零,以下是超级原油,应该可行,但不起作用!
close all;
hist(rand(1000, 1));
handles.pet_hist_rect = imrect(gca);
position = getPosition(handles.pet_hist_rect);
xdata = get(findobj(gcf,'type','patch'),'xdata');
ydata = get(findobj(gcf,'type','patch'),'ydata');
x = xdata{1};
x(x < position(1))=0;
x(x > position(1) + position(3))=0;
x(x>0) = 1;
y = ydata{1}(logical(x));
y(y==0) = NaN;
m = min(y);