Restricting getrect boundaries (image processing)
2 views (last 30 days)
Show older comments
When using the getrect function, is there any way to restrict the selected rectangle so that it cannot be dragged outside the borders of the image?
Normally it is draggable outside the image frame:
In most situations, being even slightly outside the image frame leads to errors. To fix this I used several if statements to ensure we enclose the appropriate pixels:
X=imread('office_5.jpg');
imshow(X)
rect = getrect; % [x, y, width, height]
x1 =rect(1);
x2 = x1 + rect(3);
y1 =rect(2);
y2 = y1 + rect(4);
%--------------------------------------------------
% Selected rectangle completely outside the image
if ((x1 > size(X,2)) || (x2 < 0) || (y1 > size(X,1)) || (y2 < 0))
error('No pixels selected.');
rect = [];
end
% Leftmost edge outside the image
if (x1 < 1)
x1 = 1;
end
% Rightmost edge outside the image
if (x2 > size(X,2))
x2=size(X,2);
end
% Lower edge outside the image
if y1 < 1
y1 = 1;
end
% Upper edge outside the image
if y2 > size(X,1)
y2 = size(X,1);
end
But I think there must be a simpler way to do this.
Any suggestions would be greatly appreciated.
0 Comments
Accepted Answer
More Answers (0)
See Also
Categories
Find more on Image Processing Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!