티스토리 뷰

OpenCV

[Kinect with openCV] cvConvexityDefects()의 사용

생각많은 소심남 2012. 10. 9. 20:00

우리나라에는 이 함수와 관련된 글이 없는거 같습니다. 그냥 저도 구글링해서 얻은 소스를 토대로 지난번 Convexhull 때 구현하고자 했던 ConvexityDefects를 시도해봤습니다.

 

 

사진을 보면 아시겠지만 ConvexityDefects 란 Convexhull상에서 실제 개체가 차지하는 영역사이의 빈공간을 말합니다. 그 중 위와 같이 contour가 확 바뀌는 지점을 Defects의 DepthPoint라고 말합니다. 즉, 저 점들이 손가락 사이를 표현하는 것이겠지요. 한번 동작 영상을 보겠습니다.

 

 

보시는 것처럼 손이 좌우로 이동함에도 그 Defect 값들은 유지가 되고 있습니다.

사실 CvConvexityDefect라는 자료형이 있고 지금 위의 것은 그중 DepthPoint라는 속성을 뽑아내서 보여주고 있는 겁니다. 이 외에도 startPoint와 endPoint와 같은 속성도 있습니다.

 

 <StartPoint만 뽑았을 때>

<endPoint만 뽑았을 때>

 

보시기엔 좌우 차이만 있을 뿐 별 변화를 못느낄 겁니다. 어떤 원리로 startPoint와 endPoint가 결정되는지는 조금더 확인해봐야 될거 같습니다. 아무튼 저도 기억하기 위해서 간단히 코드를 첨부해봅니다.

 

 

뭐 이렇게 남기다보면 누군가 필요하실 분이 계시겠지요.

 

댓글