[Python] OpenCV를 사용해서 이미지를 다뤄보자

OpenCV는 Open source Computer Vision library의 약자로,
실시간 컴퓨터 비전 및 영상 처리를 위한 오픈 소스 라이브러리입니다. 
Python을 비롯한 다양한 프로그래밍 언어에서 사용할 수 있으며,
이미지 및 비디오 처리, 물체 검출, 얼굴 인식, 모션 추적 등

다양한 컴퓨터 비전 작업을 수행할 수 있습니다.
이를 활용한 작업은 대부분의 이미지를 읽고,

적절한 연산을 적용한 뒤, 결과를 출력하거나 파일로 저장하는 것입니다.

우선, python에서 모듈 설치를 먼저 합니다.

pip install opencv-python

 

그 다음, OpenCV의 가장 첫 번째 단계인 이미지 입출력에 대해 알아보겠습니다

import cv2

img_file = "./python.jpg" # 표시할 이미지 경로
img = cv2.imread(img_file) # 이미지를 읽어서 img 변수에 할당

if img is not None:
  cv2.imshow('IMG', img)      # 읽은 이미지를 창에 표시
  cv2.waitKey()               # 키가 입력될 때 까지 대기
  cv2.destroyAllWindows()     # 창 모두 닫기
else:
    print('No image file.')

해당 이미지로 진행

코드를 실행하면 Python 이미지가 새로운 창에 표시됩니다.
cv2.imread() 함수로 이미지를 읽어 올 수 있습니다.
cv2.imshow() 함수는 읽어 온 이미지를 화면에 표시해주는 기능을 합니다.
그리고 키보드의 아무 키나 누르면 창이 꺼집니다.
코드에서 cv2.waitKey()가 없으면 창이 떴다가 바로 사라집니다.
키가 입력될 때까지 사진을 뜨게 하는 기능을
cv2.wiatKey()가 하기 때문입니다.
그리고 키가 입력된 후에는 cv2.destroyAllWindows()를 통해
해당 이미지가 표시된 모든 창을 끕니다.

(+해당 이미지를 복사하기 위한 컨+C가 먹힙니다.)

 

다음은 흑백 이미지를 출력해보겠습니다. 
cv2.imread()의 파라미터로 
cv2.IMREAD_GRAYSCALE을 전달하면
흑백 이미지로 불러옵니다.
아래 코드는 위와 동일하고 cv2.IMREAD_GRAYSCALE만
파라미터로 적용해주었습니다.

import cv2

img_file = "./python.jpg"
img = cv2.imread(img_file, cv2.IMREAD_GRAYSCALE)    # 회색으로 읽기

if img is not None:
  cv2.imshow('IMG', img)
  cv2.waitKey()
  cv2.destroyAllWindows()
else:
    print('No image file.')

회색 이미지

 

마지막으로 저장 후 세부사항은 다음 포스팅에서 다루도록 하겠습니다.

import cv2

img_file = "./python.jpg"
#tmp =
save_file = img_file[:int(len(img_file)-4)]+"_gay.jpg"  #파일명을 뒤에서부터 4개 자른후 파일명 변경
img = cv2.imread(img_file, cv2.IMREAD_GRAYSCALE)    # 회색으로 읽기

if img is not None:
  cv2.imshow('IMG', img)
  cv2.imwrite(save_file, img)   #파일 저장
  cv2.waitKey()
  cv2.destroyAllWindows()
else:
    print('No image file.')

해당 코드를 진행한다면 

변경된 이름으로 파일이 추가됩니다.