웹캠(webcam) 영상을 Grey로 출력하기
웹캠으로부터 들어오는 영상을 회색영상으로 변환하여 출력하는 프로그램이다.
아래 그림에서 위의 것은 webcam에서 들어오는 원래 컬러영상이고,
아래 것은 이를 grey로 바꾼 것이다. (사실 grey변환 외에도 quantisation을 수행한 것으로, 이에 대해서
밑에서 좀 더 자세히 설명한다.)
line 15
USB로 연결된 웹캠을 이용하려면 OpenCV에서 제공하는
VideoCapture 객체를 사용하면 편리하다.
각 카메라마다 ID를 붙이는데, 기본으로 붙어있는 카메라는 0, USB로 연결한 웹캠은 1 정도 된다.
이건 ID를 바꿔가면서 테스트해보면 된다.
line 26
마우스 클릭을 처리하기 위해서, 클릭 이벤트시 수행할 함수를 설정하는 부분이다.
"cam"은 마우스 클릭을 감지할 윈도우이고,
onmouse는 수행할 함수이고,
&greyImg는 이 함수에 넘겨줄 인수이다.
line 30
웹캠에서 들어오는 영상을 frame에 저장한다.
OpenCV에서 웬만한 부분은 다 처리하기 때문에, read 함수만 호출하면 된다.
line 32
컬러영상을 담고 있는 frame을 회색조 (grey) 영상인 greyImg로 변경한다.
이 때 OpenCV에서 제공하는 함수 cvtColor ( )를 이용한다.
line 33
Quantisation하는 부분이다. Grey영상의 픽셀들은 256 단계를 갖는데,
이를 지정하는 단계수( 2의 3승)로 바꾸는 과정이다.
여기서는 8 (= 2^3)단계로 바꾼다.
마우스 이벤트 핸들러 함수
왼쪽 버튼이 눌렸을 때,
그 위치에서의 픽셀값과 위치를 출력하는 함수이다.
Quantisation 함수
256단계의 grey 이미지를 2^num_bits 단계로 바꾸는 단계이다.
만약 num_bits = 1이면, 2단계, 즉 흑백 영상으로 표시한다.
num_bits = 1일 경우에, 흑백으로 quantisation된 예이다.
'Computer Vision by OpenCV' 카테고리의 다른 글
OpenCV HLS형식의 이미지 채널별 분리 (Split HLS-formated image) (0) | 2016.03.19 |
---|---|
OpenCV YUV형식의 이미지 분리 (Split YUV-formated image) (0) | 2016.03.19 |
OpenCV 함수 at( )과 포인터 사용간의 시간 차이 (0) | 2016.03.19 |
컬러이미지를 색깔별로 구분하기 (Split color image into R, G, B images) (0) | 2016.03.19 |
이미지 반전하기 (Invert Color Image) (0) | 2016.03.18 |