2011-10-30 3 views
7

ROI는 사각형으로 만 구현할 수 있습니다. 그러나 ROI로 설정하려는 윤곽이 있습니다. 누구든지 직사각형이 아닌 ROI로 윤곽선을 사용하는 방법을 알고 있습니까?OpenCV에서 ROI 사용?

가능하지 않은 경우 내 윤곽을 특정 윤곽의 픽셀로만 집중시킬 수 있습니까?

감사

PS :이 모든 OpenCV의 질문에 죄송합니다. 정말 혼란 스럽네요. $

+0

제목에 오타가 있습니다. 또한 대부분의 OpenCV 함수는 마스크 매개 변수를 가지며 마스크가 특별한 값을 갖는 입력 영역에서만 작동합니다. 당신이 실제로하고 싶은 것은 무엇입니까? –

+1

사전 정의 된 윤곽의 픽셀에 히스토그램 역 투영을 사용하고 싶습니다. 기본적으로 채워진 윤곽선의 흑백 마스크를 만든 다음 히스토그램 역 투영을 사용하려는 이미지의 마스크로 사용합니다. – user1017485

+0

컨투어를 사용하여 마스킹하기 전에 윤곽선의 픽셀을 얻지 않으려면 (윤곽선 그리기 - 검정색을 흰색으로 한 다음 원본 이미지의 마스크로 사용) 분명히 갈 수 있습니다. – AruniRC

답변

7

OpenCV는 직사각형 ROI 만 지원합니다.

그러나 특정 픽셀에 대해 일부 처리를 수행하려면 몇 가지 도우미 함수를 사용할 수 있습니다.

그 중 하나는 pointPolygonTest()입니다.이 픽셀은 주어진 픽셀이 다각형이 아니라 속해 있다는 것을 알려줍니다.

그래서 당신은 또한 또 다른 (빠른) 옵션 @ andeas-haferburg에 의해 sugested 하나입니다이 샘플 http://opencv.itseez.com/doc/tutorials/imgproc/shapedescriptors/point_polygon_test/point_polygon_test.html#point-polygon-test

을 확인

for(i=0;i<height;i++) 
{ 
     for(j=0;j<width;j++) 
     { 
      if(pointPolygonTest(Point(i,j),myPolygon)) 
      { 
       // do some processing 
      } 
     } 
} 

같은 것을 쓸 수 있습니다. (그 배경은 0이며, 다각형이 255 정도)

drawPoly() 

, 그럼 당신은 몇 가지 다른 기능에 전달하거나 직접 사용할 수 있습니다 : : 새로운 그레이 스케일 이미지에 다각형을 그림으로 마스크를 확인

for(i=0;i<height;i++) 
{ 
     for(j=0;j<width;j++) 
     { 
      if(mask[j+w*i])) 
      { 
       // do some processing 
      } 
     } 
} 

위 예제는 의사 코드 일 뿐이므로이를 작동시켜야합니다.

+0

많은 도움을 주셔서 감사합니다. – user1017485

+0

@ user1017485 어떻게 할 지 알아 냈습니까? 비슷한 문제가 있습니다. – Mzk

+0

@ user1017485 이것을 알아 냈습니까? 나는 또한 이것을하는 방법을 알고 싶다. – bearzk

관련 문제