코딩. 캠핑

OpenCV Python 입문(1) - OpenCV 기본 함수 본문

Dev(개발)/OpenCV(Python)

OpenCV Python 입문(1) - OpenCV 기본 함수

진영_8 2021. 1. 26. 15:43

이제 "안녕 파이썬!" 도 해봤으니 현재 폴더에 고양이 이미지를 하나 넣어 넣고 이미지를 하나 띄워보자

import sys
import cv2

print("Hello OpenCV", cv2.__version__)

img = cv2.imread('cat.bmp')     # img에 cat.bmp 이미지 대입

if img is None:                 # 예외처리) 이미지가 없으면,
    print('이미지가 없습니다!') # 없다고 출력
    sys.exit()                  

cv2.namedWindow('image')        # image라는 창을 하나 생성
cv2.imshow('image', img)        # image라는 창에다가 img를 보여줌
cv2.waitKey()                   # 바로 종료되지 않도록 하는 대기 함수

cv2.destroyAllWindows()         # 모든 창 종료

컨트롤 + F5를 누르면

이쁜 고양이가 한 마리 나온다. 닫을 때는 아무 키나 눌러서 닫으면 된다.

 

이제 한번 따라 해 봤으니 어떤 함수가 쓰였는지 하나씩 하나씩 뜯어보자


영상 파일 불러오기

cv2.imread(filename, flags=None) -> retval

 

  • filename : 불러올 영상 파일 이름
  • flags : 옵션 플래그
    cv2.IMREAD_COLOR : BGR 컬러로 읽기 (기본값)
    cv2.IMREAD_GRAYSCLE : 그레이 스케일로 읽기
    cv2.IMREAD_UNCHANGED : 파일 속성 그대로 읽기 (PNG 파일)
  • retval : 불러온 영상 데이터

많은 옵션들이 있지만 요것들만 소개하고, 쓰는 방법으로는 

img = cv2.imread('cat.bmp', cv2.IMREAD_COLOR)
img = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
img = cv2.imread('cat.bmp', cv2.IMREAD_UNCHANGED)

로 각각 쓰면 된다. UNCHANGED에 관해서는 다음에 자세하게 다룰 것이다. read가 있으면 write도 있다!


영상 파일 저장하기

cv2.imwrite(filename, img, params=None) -> retval
  • filename : 저장할 영상 파일 이름
  • img : 저장할 영상 데이터
  • params : 파일 저장 옵션 지정
    ex) [cv.2IMWRITE_JPEG__QUALITY, 90] : JPG 파일 압축률을 90%로 지정
  • retval : 성공적으로 저장하면 True, 실패하면 False

인데 직접 해보는 게 좋으니 위에 불러오는 옵션 중 그레이 스케일로 해서 흑백으로 저장해보겠다.

import sys
import cv2

print("Hello OpenCV", cv2.__version__)

img = cv2.imread('cat.bmp')     	# img에 cat.bmp 이미지 대입

if img is None:						# 예외처리) 이미지가 없으면,
    print('이미지가 없습니다!')		# 없다고 출력
    sys.exit()                  

cv2.imwrite('cat_gray.png', img)    # cat_gray.png 라는 이름으로 img를 저장

cv2.namedWindow('image')            # image라는 창을 하나 생성
cv2.imshow('image', img)            # image라는 창에다가 img를 보여줌
cv2.waitKey()                       # 바로 종료되지 않도록 하는 대기 함수

cv2.destroyAllWindows()             # 모든 창 종료

아까랑 비슷하지만, img에 그레이 스케일로 불러온 다음, 'cat_gray.png'로 저장했다. 실행해보면

이렇게 흑백으로 된 이미지가 열리고,

imwrite으로 만들어준 cat_gray.png라는 파일이 생성된 걸 확인할 수 있다.


새 창 띄우기

cv2.nameWindow(winname, flags=None) -> None
  • winname : 창 고유 이름
  • flags : 옵션 플래그
    cv2.WINDOW_AUTOSIZE : 창 크기를 영상 크기에 맞게 변경(기본값)
    cv2.WINDOW_NORMAL : 영상 크기를 창 크기에 맞게 지정
cv2.namedWindow('image', cv2.WINDOW_NORMAL)

로 지정해서 실행하게 되면,

기존에 뜨던 창과는 다르게 창 사이즈를 내 맘대로 조절할 수 있게 된다.


창 닫기

cv2.destroyWindow(winname) -> None
cv2.destroyAllWindows() -> None
  • winname : 닫고자 하는 창 이름
  • 일반적인 경우에는 프로그램 종료 시에 열려 있는 모든 창이 닫힌다.

창 위치 이동

cv2.moveWindow(winname, x, y) -> None
  • winname : 이동하고자 하는 창 이름
  • x, y : 이동할 위치 좌표

창 크기 변경

cv2.resizeWindow(winname, width, height) -> None
  • winname : 크기를 변경할 창 이름
  • width, height : 변경할 창의 가로 세로 크기
  • 창 생성 시 cv2.WINDOW_NORMAL 속성으로 생성되어야 동작한다.

영상 출력하기

cv2.imshow(winname, mat) -> None
  • winname : 출력할 대상 창 이름
  • mat : 출력할 영상 데이터
  • winname에 해당하는 창이 없으면 새로 만들어서 영상을 출력한다.
    windows 환경에서는 컨트롤 + S 로 저장, 컨트롤 + C, V로 클립보드에 복사했다가 붙여 넣기도 할 수 있다.
    cv2.waitKey()가 없으면 화면에 영상이 나타나지 않는다.

키보드 입력 대기

cv2.waitKey(delay=None) -> retval
  • delay : 밀리초 단위 대기 시간. delay ≤ 0 이면 무한 대기. 기본값 0.
  • retval : 눌린 키 값(아스키 코드). 키가 눌리지 않으면 -1.
  • OpenCV 창이 하나라도 있을 때 동작.

 

OpenCV 기본적인 함수 몇가지에 대해서 알아보았다.

 

OpenCV: OpenCV modules

OpenCV  4.5.1-dev Open Source Computer Vision

docs.opencv.org

OpenCV에 관해서 또 궁금한것들이 생기면 여기서 검색해서 찾아보면 될 것 같다.

Comments