이진화시킨 이미지에서 findContours함수를 사용하여 contour를 찾은 후, approxPolyDP 함수를 사용하여 다각형(polygon)을 검출하는 예제입니다.
OpenCV 사용해서 실시간으로 도형 검출하기(shape detection) 1 / 2 - 이미지에서 검출 OpenCV 사용해서 실시간으로 도형 검출하기(shape detection) 2 / 2 - 웹캠에서 검출 |
2016. 12. 29 최초 작성
2018. 6. 30 도형 판정하는 방법 변경( 내각 체크 → Convex polygon 여부 검사 )
webcam으로 테스트 추가
1-1. 다음 테스트용 이미지를 저장하여 OpenCV를 위한 프로젝트 폴더에 넣습니다.
사각형, 육각형, 십각형 도형에는 각각 해당 도형은 아니지만 꼭지점 갯수가 같은 도형이 같이 추가되어 있습니다.
원의 경우에는 팔각형이 추가되어 있는데 실행 결과에서 이유를 설명합니다.
Visual Studio 2017의 경우 프로젝트 이름이 OpenCV Project V 라면 이미지를 복사해놓을 위치는 다음과 같습니다.
C:\Users\로그인_사용자_이름\source\repos\OpenCV Project V\OpenCV Project V
OpenCV를 위한 프로젝트 생성 방법은 다음 포스팅을 참고하세요. Visual Studio 2017에서 OpenCV 3.4.1를 사용하는 방법 http://webnautes.tistory.com/1132 |
1-2. 다음 소스코드를 프로젝트의 cpp 소스 파일에 붙여넣기 합니다.
#include "opencv2/opencv.hpp" |
1-3. 실행해보면 원본 이미지를 보여주는 input 창과 도형에 인식된 이름을 출력해주는 result 창이 보여집니다.
결과 창입니다. 테스트 이미지에 주어진 모든 도형이 회전 되었는지 여부랑 상관없이 해당 도형을 검출하고 있습니다. 꼭지점 갯수를 기반으로 해당 도형인지 판단 하기 때문입니다.
해당 다각형을 위한 꼭지점 갯수를 가지고 있더라도 Convex polygon이 아니라면 제외 시켰기 때문에 파란색 2번, 녹색 2번, 노란색 2번은 검출된 이름 대신에 꼭지점 갯수만 출력하고 있습니다.
원에서 검출된 contour를 approxPolyDP 함수로 근사화하면 8개의 꼭지점을 갖습니다.
필요시 팔각형과 원 중 한쪽으로 인식이 완료되었다고 코드를 수정해도 될 듯합니다.
또는 OpenCV에서 제공하는 원을 검출하는 HoughCircles 함수를 사용해도 됩니다.
https://docs.opencv.org/3.4/d4/d70/tutorial_hough_circle.html
다음 포스팅에서는 웹캠을 사용하여 실시간으로 도형 검출하는 것을 진행해보겠습니다.
'OpenCV > OpenCV 강좌' 카테고리의 다른 글
OpenCV Python 강좌 - 이미지 픽셀에 접근하는 방법 (8) | 2018.09.13 |
---|---|
OpenCV 사용해서 실시간으로 도형 검출하기(shape detection) 2 / 2 - 웹캠에서 검출 (14) | 2018.06.30 |
OpenCV를 이용하여 특정색 (빨간색) 검출 (95) | 2018.06.10 |
OpenCV에서 투명 이미지 오버레이 하기 (59) | 2017.11.23 |
웹캠으로부터 입력된 영상을 일련번호 붙인 이미지 파일로 저장하는 예제 (52) | 2017.06.29 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!