clickBoundingBoxes2D.m 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. function [X1,Y1,X2,Y2]=clickBoundingBoxes2D( i_maxNoBBs )
  2. % function [X,Y]=clickBoundingBoxes2D( i_maxNoBBs )
  3. %
  4. % date: 04-02-2014 (dd-mm-yyyy)
  5. % author: Alexander Freytag
  6. %% check inputs and default arguments
  7. if ( nargin < 1 )
  8. i_maxNoBBs = Inf;
  9. end
  10. X1 = [];
  11. Y1 = [];
  12. X2 = [];
  13. Y2 = [];
  14. keydown = 0;
  15. %% start clicking
  16. statusMsg = sprintf( ' --- Start clicking bounding box points! ---' );
  17. disp(statusMsg);
  18. while ( size( X1, 1 ) < i_maxNoBBs ),
  19. [X12,Y12, b_success]=clickPoints2D( 2 ); % we need two points for a bounding box
  20. % check whether input is valid
  21. if ( b_success )
  22. xl = min ( X12(1,1) , X12(2,1) );
  23. xr = max ( X12(1,1) , X12(2,1) );
  24. width = xr - xl;
  25. yl = min ( Y12(1,1) , Y12(2,1) );
  26. yr = max ( Y12(1,1) , Y12(2,1) );
  27. height = yr - yl;
  28. % we currently only accept squared regions, so we take the
  29. % small size
  30. % smallDim = min ( width, height);
  31. xr = xl + width;
  32. yr = yl + height;
  33. X1 = [ X1; xl ];
  34. Y1 = [ Y1; yl ];
  35. X2 = [ X2; xr ];
  36. Y2 = [ Y2; yr ];
  37. hold on;
  38. line([xl xl xr xr xl]',[yl yr yr yl yl]','color','r','linewidth',5);
  39. hold off;
  40. else
  41. % break clicking loop
  42. break;
  43. end
  44. end
  45. end