최근에 컴퓨터 비전이란 기술이 각광을 받고 있다. 컴퓨터 비전이란 쉽게 말해 컴퓨터가 이미지나 영상을 사람처럼 보는 는 능력을 구현하는 것을 목표로 하는 소프트웨어 분야다. 넓은 관점에서 사람처럼 본다는 것은 단순히 이미지를 보는게 아니라 그 안에 담겨있는 의미를 해석하고 때로는 능동적으로 행동하는 것까지 내포한다.
컴퓨터 비전의 위키 피디아의 정의는 다음과 같다.
컴퓨터 비전은 기계의 시각에 해당하는 부분을 연구하는 컴퓨터 과학의 최신 연구 분야 중 하나이다. 공학적인 관점에서, 컴퓨터 비전은 인간의 시각이 할 수 있는 몇 가지 일을 수행하는 자율적인 시스템을 만드는 것을 목표로 한다.
사실 이 기술이 갑자기 튀어나온 기술이 아니라는 것은 다들 잘 알고 있다.
특히 미국은 911 테러 이후 모든 시민들을 감시하고 싶을 정도로 불안한 사회가 되버렸다.
그래서 나온 미드가 퍼슨 오브 인터레스트에서는 모든 도시를 CCTV로 감시하는 인공지능 시스템이 등장하고 인간들은 인공지능에 대항하여 싸우는 다소 미래적인 내용을 담고 있다. 사실 현재 스마트폰과 IT기술이 발전한 나라에서는 거의 모든 시민에 대한 추적이 충분히 가능하다고 본다. 단지 윤리적인 문제 때문에 드러내 놓고 활동이 어려울 뿐이다.
미드에서는 주로 안면 인식기술 face recognition 을 사용하여 범죄자와 테러리스트를 추적하는데 사용하였다. CCTV의 매우 구질한 화질에서도 매우 인식이 잘 되는 모습은 다소 납득이 어려웠지만 뭐 나날히 발전하는 AI의 기술로 봤을 때 지금은 그렇게 불가능한 일이 아닐 수도 있다고 본다.
컴퓨터 비전의 발전이란 것은 화질이 좋으면 더 많은 정보를 추론해낼수 있어야 하고 화질이 나쁘면 화질을 향상시켜서 인식률을 올릴 수 있는 것이다. 거기에다가 AI가 사람의 사회적 맥락(Context) 까지 해석할 날도 멀지 않았다. 그런 경우 인식률은 더 좋아지는 것이다. 우리 사람도 그렇지 않은가? 뒷통수만 보고서도 누군지 알때가 있다. 컴퓨터 비전이 추구하는 것은 그 정도보다 높을 것이다.
예전에는 단순히 이미지를 처리하는 수준에 머물러 있었는데 현재는 이미지 처리에 +@ 분석까지 어느정도 나오는 것 같다. opencv 는 오픈소스이고 많이 알려졌기 때문에 한번쯤 알아 보는 것도 좋다.
*윈도우10에서 설치하는 방법이다.
아래 웹사이트에 접속하면 pip 설치법이 나와있다.
docs.opencv.org/master/d5/de5/tutorial_py_setup_in_windows.html
이렇게 나와있는데 다소 장황하다.
일단은 아래 두개의 모듈을 먼저 설치하라고 한다. python의 opencv 가 데이터 작업을 위해 numpy 와 matplotlib 을 사용하기 때문이다. 모듈 중에서는 단독으로 사용하는 것들이 많지만 이렇게 다양한 모듈과 같이 사용하는 것들도 있다.
pip install numpy
pip install matplotlib
그 다음은 opencv를 설치할 차례인데 pypi 의 문서를 참고하는게 좀 더 수월할 수 있다.
pypi.org/project/opencv-python/
opencv-python 을 설치한다. 추가 모듈까지 설치하려면 아래 contrib 버전으로 설치한다.
처음 설치하는 입장에서는 opencv-python 으로 사용하다가 추가 모듈 사용이 필요해지면 설치해도 된다.
pip install opencv-python # 주요 모듈
pip install opencv-contrib-python # 추가 모듈
* 실행 테스트
실행 테스트를 할 차례이다.
opencv로 할 수 있는 일은 많이 있겠지만 이미지 처리가 기본이니까 이미지 파일을 로드한다.
픽사베이 같은 곳에서 무료 저작권 이미지들을 사용해보자. 고퀄리티 자료가 많이 있다.
픽사베이 싸이트 바로가기
픽사베이에서 고양이 사진을 다운로드했다. 파이썬 소스코드가 있는 폴더에 넣는다. (하위 디렉토리를 만들어도 된다.)
import cv2
image_origin = cv2.imread('cv/cat.jpg', cv2.IMREAD_COLOR)
cv2.imshow('Original Image the CAT', image_origin)
cv2.waitKey(0)
cv2.imwrite('cv/cat_copy.bmp', image_origin)
import cv2 가 opencv 를 사용하기 위한 첫걸음이다.
cv2.imread 메서드로 이미지 파일을 가져온다.
cv2.imshow 메서드는 이미지 파일을 열어서 보여준다.
cv2.waitKey(0) 은 종료하지 않고 기다린다.
cv2.imwrite 메서드는 파일을 저장한다. 이때 확장자를 jpg, png, bmp 같이 명시해줘야 파일의 형식에 맞게 저장된다.
파일을 읽는데 성공했다. 파일의 저장도 잘 되었다.
다음은 읽은 파일을 그레이스케일(흑백 사진)로 바꿔서 저장해보자.
import cv2
image_origin = cv2.imread('cv/cat.jpg', cv2.IMREAD_COLOR)
cv2.imshow('Original Image the CAT', image_origin)
cv2.waitKey(0)
cv2.imwrite('cv/cat_copy.bmp', image_origin)
cv2.destroyAllWindows()
image_gray = cv2.cvtColor(image_origin, cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray Scale Image the CAT', image_gray)
cv2.waitKey(0)
cv2.imwrite('cv/cat_copy.jpg', image_gray)
image_gray 는 이미지를 읽어온 객체라는 것에 주의하자. 파이썬은 동적 타이프라서 자료형을 명시 안하다 보니 이게 뭘 넘겨주는 것인지 간혹 잊게된다. 여기서는 기존의 칼라 파일 객체를 받아서 그레이 스케일로 convert (변환) 시킨다.
다른 부분은 같다. imshow 라는 메서드는 image show 라는 의미이고 저장할 때의 파일 포맷만 jpg로 바꿨다.
실행하면 그레이스케일로 바뀐다.
파일의 저장도 정확하게 된다. 같은 이미지라도 확장자가 다르면 파일의 포맷이 바뀐다.
테스트가 잘 끝났다.
OpenCV는 C++ 용도 있어서 구분하여 Python은 OpenCV-Python 이라고 한다. 아래의 readthedocs 를 읽으면 도움이 될 것 이다.
opencv-python.readthedocs.io/en/latest/