2011-09-27 3 views
0

윤곽선의 최소 경계 사각형은 OpenCv에 의해 CvRect 구조로 반환됩니다. 내가 m 픽셀 두꺼운 여백/테두리가 원래 이미지에이 CvRect에 해당하는 하위 이미지 주위에 노력하고있어, 즉 구성 요소 (윤곽선)의 정확한 경계 사각형 대신 구성 요소를 포함하는 더 큰 무언가를 얻는다. 또한 바로 그 주변 픽셀.이미지에 반영되지 않는 CvRect 값의 변경

내가 서브 이미지 얻기 위해 나중에 CvSetImageROI()에 적용되는 CvRect의 크기를 증가하려면 다음 코드를 사용하고, 이미지의 경계시주의 사항 : 여기

//making m px border around subimg 
CvRect box_swt = box1; 
box_swt.x = (box1.x)>m ? box1.x-m : box1.x; 
box_swt.y = (box1.y)>m ? box1.y-m : box1.y; 
box_swt.width = (box1.x + box1.width) < img->width-m ? box1.width+m : box1.width; 
box_swt.height = (box1.y + box1.height) < img->height-m ? box1.height+m : box1.height; 

box1 저장 반환 from cvBoundingRect(ptr, 0) 여기서 ptr은 검출 된 윤곽에 대한 포인터입니다.

결과적으로 하위 이미지는 위쪽 및 왼쪽 테두리에서만 커지고 나머지는 변경되지 않습니다. 모든 측면에서 균일 한 m 픽셀 두께의 테두리가있는 하위 이미지가 표시되지 않습니다. 이것은 경계에있는 사람들뿐만 아니라 모든 경우에 발생합니다. 논리적 인 오류가 있습니까?

답변

0

크기를 늘리지 않고 직사각형의 x와 y를 수정하면 그냥 이동 한 다음 너비와 높이를 m만큼 증가시킵니다. 네가 원하는 것은 원하는 효과를 얻기 위해 2m 씩 늘리는 것이다.

+0

바보 같지 않아서 게시 후 얼마 지나지 않아 수정되었습니다. 어쨌든 고마워. – AruniRC

관련 문제