[Python] OpenCV를 이용한 Image Diff Develop Tip

틀린 그림 찾기 게임이 있다고 가정합니다.
이를 눈으로 찾기는 아주 어렵지만,
이를 자동으로 해 주는 프로그램이 있다면 편하겠죠?

이를 검색을 해 보았더니,

Image Difference with OpenCV and Python 라는 블로그가 존재 하더군요.
(해당 소스 참조, 약간 수정된게 있었는지 버전 문제인지 ... 작업했던 기억이...)

뭐 소스나 기타 등등은 제외하고 OpenCV 버전 및 이를 돌리는 것도 
X-Window에 의존성을 갖는지라, 맥에서 시작했다가
가상머신의 우분투서버에서 돌려보았습니다.
(대신 X-Window 가 실행되고 있어야 합니다)

결론은,

위에처럼 Original 이미지와 Modified 이미지가 있으면 이 이미지에서
틀린 부분만 찾아주는 것입니다.

우분투 16.04 LTS (Vbuntu Custom iso)에 다음과 같이 필요 패키지를 설치하였습니다.


$ sudo apt install python-pip python-opencv
$ sudo pip install --upgrade scikit-image
$ sudo pip install --upgrade imutils

그 다음 다음과 같이 실행하면 됩니다.

$ python image_diff.py -f images/original_01.png -s images/modified_01.png

머신러닝을 위한 이미지 전처리 등에서 꼭 필요한 작업일 수도 있겠습니다.

추가!

다른날은 Mac 시에라에서 작업을 해 보았습니다. (파이썬 2.7.13 으로 작업)

동일한 소스를 작업하는데,
pyenv로 환경을 만들었습니다.

$ pyenv install 2.7.13
(미리 설치 되어 있다면 생략 가능)

$ pyenv virtualenv 2.7.13 cv2
(cv2 라는 가상환경을 만들어 보았습니다)

$ pyenv activate cv2
(cv2 라는 가상환경으로 이동 후)

(cv2) $ pip install opencv-python imutils scikit-image

그 다음 동일하게 위의 결과를 실행하면 되었습니다.
(cv2) $ python image_diff.py -f a.png -s b.png

약간 주제를 벗어나 pyenv 이야기 지만, 
만약 PyCharm에서 위의 가상환경의 python 을 지정하기 위하여

(cv2) $ which python
명령을 내리면, 그 결과는
/Users/mcchae/.pyenv/shims/python

와 같이 나옵니다. (위의 파이썬은 해당 환경으로 이동하기 위한 또 다른 shell script 였구요)

결국 다음과 같이 해서 해당 파이썬 인터프리터 패스를 구했습니다.

(cv2) $ pyenv which python
/Users/mcchae/.pyenv/versions/cv2/bin/python

다음의 그림은 맥에서 돌린 결과 이미지들 입니다.

 


어느 분께는 도움이 되셨기를...


덧글

댓글 입력 영역

구글애드텍스트