최종업데이트 - 2018. 6. 10
OpenCV를 이용하여 카메라로부터 캡쳐되는 영상은 BGR 영상입니다.
RGB가 아니라 BGR이라고 부르는 것은 Blue, Green, Red 순으로 한 픽셀이 구성되기 때문입니다.
코드에서는 HSV 영상으로 변환한 후, 영상에서 원하는 색을 분리하고 있습니다.
HSV 영상에서 Hue 성분은 다음처럼 특정 색의 컬러가 일정한 범위를 갖기 때문에 분리해내기가 쉽습니다.
참고 [2]에 따르면 cvtColor 함수를 사용하여 변화하면 0 < Hue < 179, 0 < Saturation < 255, 0 < Value < 255 의 범위를 갖습니다.
위 그림의 값에 0.5를 곱하면 원하는 색의 hue 값입니다.
예제 코드에서는 Scalar 객체로 원하는 색의 값을 B, G , R 순으로 선언한 후, Hue 값의 범위에 맞추어 마스크 영상을 만들어줍니다.
현재는 빨간색, 파란색, 노란색, 자홍색만 코드에 포함되어 있습니다.
아래 영상은 노란색을 검출해본 결과입니다. 검출된 노란 물체 주변으로 빨간색 사각형이 보입니다.
단순히 구현하기 위해서 형태를 보지 않고 가장 큰 물체를 기준으로 사각형이 그려집니다.
테스트에 사용된 영상입니다. 실제 카메라로 할 경우에는 조명이 너무 어둡거나 너무 밝으면 안좋은 결과가 보일 수 도 있습니다.
#include <opencv2/opencv.hpp> Scalar magenta(255, 0, 255); |
참고
[1] https://stackoverflow.com/questions/32522989/opencv-better-detection-of-red-color
[2] https://docs.opencv.org/3.4.1/df/d9d/tutorial_py_colorspaces.html
[3] https://github.com/opencv/opencv/blob/master/samples/cpp/videocapture_basic.cpp
'OpenCV > OpenCV 강좌' 카테고리의 다른 글
OpenCV 사용해서 실시간으로 도형 검출하기(shape detection) 2 / 2 - 웹캠에서 검출 (14) | 2018.06.30 |
---|---|
OpenCV 사용해서 실시간으로 도형 검출하기(shape detection) 1 / 2 - 이미지에서 검출 (41) | 2018.06.30 |
OpenCV에서 투명 이미지 오버레이 하기 (59) | 2017.11.23 |
웹캠으로부터 입력된 영상을 일련번호 붙인 이미지 파일로 저장하는 예제 (52) | 2017.06.29 |
OpenCV 3.1 예제 - OpenCV를 pthread, mutex와 같이 사용하기 (2) | 2016.11.25 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!