Restricting getrect boundaries (image processing)
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!