웹캠으로 실시간 움직임 감지하기
by Cori웹캠을 이용하여, 실시간 움직임이 감지될 경우 움직임이 있는 부분에 대해 표시를 해 주는 기능을 구현해보자
* 해당 포스팅에서 다루고 있는 모든 내용은 다음 서적을 참고하였습니다.
내용 정리
0. 접근 방식
-> 카메라를 고정한 책상이나 건물이 미세하게 떨리기도 하고 카메라의 이미지 센서의 한계 때문에 영상 간의 차이는 항상 발생) 이전과 이후의 두 프레임 영상에서 단순히 차이를 구해서는 움직임을 감지할 수 없다.
∴ 세 프레임 a, b, c를 순차적으로 얻어 a와 b의 차이 그리고 b와 c의 차이가 모두 발견되는 경우에 한해 움직임이 있는 것으로 판단
해야 하며, 각 프레임의 차이가 특정 기준치보다 작은 픽셀은 무시하고 차이가 없는 것으로 간주한다.
최종적으로 차이가 있는 것으로 판단한 픽셀의 개수가 특정 기준치보다 많은 경우, 움직임이 있는 것으로 판단한다.
1. 구현
카메라 캡션 장치를 준비하고, 프레임 폭을 720, 600으로 설정한다. 또한 thresh를 통해 달라진 픽셀 값 기준치를 설정하고, max_diff
를 통해 달라진 픽셀 개수 기준치를 설정한다.
3개의 영상을 그레이 스케일로 변경하고, a - b, b - c 절대 값 차를 구한다. 스레시홀드를 통해 기준치 이내의 차이는 무시하며, 두
영상의 차이가 모두 발견된 경우를 AND 연산을 통해 구한다. 이후 열림 연산으로 노이즈를 제거하고, 차이가 발생한 픽셀의 개수를
판단한 후 사각형을 그린다. 이후, hstack 연산을 통해 컬러 스케일 영상과 스레시홀드 영상을 통합해서 출력한다.
다음은 위 코드를 실행한 결과물이다.
'AI > Computer Vision' 카테고리의 다른 글
색상 정보로 객체 추적하기 (0) | 2021.10.18 |
---|---|
색상 변환 (BGR -> HSV, YUV, YCbCr) (0) | 2021.10.15 |
역투영 (0) | 2021.09.25 |
영상 히스토그램 그리기 (0) | 2021.09.24 |
노멀라이즈, 이퀄라이즈, CLAHE (0) | 2021.09.23 |
블로그의 정보
코딩하는 오리
Cori