1

코드에서 감지 된면을 잘라 내고 싶습니다. 여기 내 코드가있다.matlab 코드의 이미지에서 사각형 상자를 자르는 방법

function DisplayDetections(im, dets) 

imshow(im); 

k = size(dets,1); 

hold on; 
for i=1:k 
    rectangle('Position', dets(i,:),'LineWidth',2,'EdgeColor', 'r'); 

end 
imcrop(rectangle); 
hold off; 

자르기에 구문 오류가 있습니다. 위의 상자에서 자르기 직사각형 상자에서 아무도 도울 수 있습니까?

+0

구문 오류 란 무엇입니까? 이 코드는 편집기에서 Run 버튼을 누르지 않는 한 .... 실행되어야합니다. – rayryeng

+0

구문 오류는 아마도 'imcrop'함수의 입력 인수에서 'rectangle'함수를 할당하는 것일 수 있습니다. – Juderb

답변

4

해당 코드 만 은 이미지의 직사각형을 (으)로 그립니다. 정의 된 사각형으로 이미지의 일부를 자르려면 imcrop을 사용하십시오.

이와 같이, 자른 모든 직사각형을 저장하기 위해 이와 같은 작업을 수행 할 수 있습니다. 이것은 imdets 이미 함수로부터 코드로 정의된다고 가정한다 :

k = size(dets,1); 
cropped = cell(1,k); 

for i=1:k 
    cropped{k} = imcrop(im, dets(i,:)); 
end 

cropped 각 요소가 dets 배열 내의 각각의 직사각형에 의해 형성된 절단 된 화상을 저장하는 셀 어레이 것이다. 이것은 dets이 4 개의 열이있는 2D 배열이고, 행의 수는 가지고있는 사각형의 수를 결정한다고 가정합니다.

[xmin ymin width height] 

xmin, ymin는 직사각형의 좌상 코너의 수평 및 수직 좌표이며 widthheight는 사각형의 폭과 높이이다 : dets의 각 행과 같이 구성한다.

당신이 셀 어레이의 자른 부분에 액세스하려면

, 단순히 수행

crp = cropped{k}; 

k 사각형 이미지에서 검출 된 K 것이다.

관련 문제