카테고리 없음

OpenCV Findcontour 예제

wjheo 2016. 6. 20. 16:10
OpenCV를 Python에서 사용하려면
1.Python
2.OpenCV
3.numpy
세가지가 필수적으로 필요합니다.

OpenCV는 공식홈페이지에서 받을 수 있고 (저는 2.4.12버전을 사용) ,

Python과 numpy는 OpenCV 공식 도큐먼트의 설치 튜토리얼 페이지에서 받을 수 있습니다.

다른 곳에서 검색해 가며 받는 것 보다 호환도 잘 되고, 무엇보다 편하므로 이곳에서 다운로드를 받으시는 것을 추천드립니다.


파이썬 편집기로는 여러가지 툴이 있습니다. 

제가 사용한 툴은 JetBrains의 PyCharm입니다.

30일 동안 무료로 사용 할 수 있으며, 대학교 메일이 있다면 학생 라이센스를 발급받아 1년 간 사용 할 수 있습니다.


PyCharm Download




설치 튜토리얼 페이지를 따라 설치를 하고 난 후 


위의 코드를 실행해 보시기 바랍니다.


정상적으로 이미지 파일을 확인하는 창이 뜨시면 opencv설치에 성공하신 것입니다.





위의 예제는 사진에서 지갑의 윤곽선만 뽑아내는 예제입니다.


각 함수에 대한 설명은 주석으로 달려있으며,


좀 더 자세한 정보를 얻고 싶으시다면, 


OpenCV 도큐먼트에서 해당 함수명을 검색하시면 됩니다.(영어 주의)



여기서는 위의 예제 중 For문을 사용한 부분을 설명드리겠습니다.




이 이미지는 findContours함수를 막 사용했을 때 찾는 Contour들을 모두 그려 본 것입니다.


보시다시피 그리 복잡하지 않은 이미지임에도 Contour가 최소 6개나 잡혀 있는 것을 보실 수 있습니다.


이 중에서 우리가 필요한 Contour는 지갑을 둘러싸고있는 Contour 한 개 입니다.


필요없는 Contour를 어떻게 구별해 낼까 고민하던 중, For문을 돌며, Contour들의 크기를 비교해 가장 큰 Contour를 찾으면 


괜찮을 것이라는 생각을 했습니다. 더 좋은 방법이 분명 있겠지만, 미흡한 실력에 떠오른 생각이 이 방법뿐이라 이 방법을 선택했습니다.


가장 큰 Contour의 인덱스번호를 구해서 예제코드 내에서와 같이 그려보면 아래 결과와 같이 지갑의 윤곽선만 추출해 낼 수 있습니다.



결과