12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- function imWithBoxes = drawBoxesToImg(im, boxes, partcolor, i_linewidth)
- % showboxes(im, boxes)
- % Draw boxes on top of image.
- if nargin < 4
- i_linewidth = 1;
- end
- if nargin < 3,
- partcolor{1} = [255,0,0];
- partcolor(2:20) = num2cell(repmat( [0,0,255], [19,1]),2);
- end
- if ( nargout == 0)
- %imagesc(im); axis image; axis off;
- imshow(im); hold on;
- if ~isempty(boxes)
- numparts = floor(size(boxes, 2)/4);
- for i = 1:numparts
- x1 = boxes(:,1+(i-1)*4);
- y1 = boxes(:,2+(i-1)*4);
- x2 = boxes(:,3+(i-1)*4);
- y2 = boxes(:,4+(i-1)*4);
- line([x1 x1 x2 x2 x1]',[y1 y2 y2 y1 y1]','Color',partcolor{i},'linewidth',i_linewidth);
- end
- end
- drawnow;
- hold off;
- else
-
- if ( ndims(im) == 2 )
- imWithBoxes = repmat( im, [1,1,3] );
- else
- imWithBoxes = im;
- end
-
-
- hold on;
-
- i_offset = i_linewidth/2;
-
- %imagesc(im); axis image; axis off;
- if ~isempty(boxes)
- numparts = floor(size(boxes, 2)/4);
-
-
- for i = 1:numparts
-
- %[dist-to-left dist-to-top dist-to-left+width dist-to-top+height]
- x1 = boxes(:,1+(i-1)*4);
- y1 = boxes(:,2+(i-1)*4);
- x2 = boxes(:,3+(i-1)*4);
- y2 = boxes(:,4+(i-1)*4);
-
- [ height, width, ~ ] = size ( imWithBoxes );
-
- i_minLeft = max ( 1 , x1-i_offset );
- i_maxRight = min ( width, x2+i_offset);
- i_minBottom = max ( 1 , y1-i_offset );
- i_maxTop = min ( height, y2+i_offset);
- %
- imWithBoxes( i_minBottom:y2+i_offset, i_minLeft:x1+i_offset, 1) = partcolor{i}(1);
- imWithBoxes( i_minBottom:y2+i_offset, i_minLeft:x1+i_offset, 2) = partcolor{i}(2);
- imWithBoxes( i_minBottom:y2+i_offset, i_minLeft:x1+i_offset, 3) = partcolor{i}(3);
- %
- imWithBoxes( i_minBottom:i_maxTop, x2-i_offset:i_maxRight, 1) = partcolor{i}(1);
- imWithBoxes( i_minBottom:i_maxTop, x2-i_offset:i_maxRight, 2) = partcolor{i}(2);
- imWithBoxes( i_minBottom:i_maxTop, x2-i_offset:i_maxRight, 3) = partcolor{i}(3);
- %
- imWithBoxes( i_minBottom:y1+i_offset, x1:x2, 1) = partcolor{i}(1);
- imWithBoxes( i_minBottom:y1+i_offset, x1:x2, 2) = partcolor{i}(2);
- imWithBoxes( i_minBottom:y1+i_offset, x1:x2, 3) = partcolor{i}(3);
- %
- imWithBoxes( y2-i_offset:i_maxTop, x1:x2, 1) = partcolor{i}(1);
- imWithBoxes( y2-i_offset:i_maxTop, x1:x2, 2) = partcolor{i}(2);
- imWithBoxes( y2-i_offset:i_maxTop, x1:x2, 3) = partcolor{i}(3);
- end
- end
- end
|