본문 바로가기
Computer Vision/Python

[Open CV 기초 2] 이미지 파일 불러오기, 저장, Open CV 함수

by 호리미 2021. 12. 30.

1. 이미지 불러오기

윈도우에서는 컨트롤+s 로 이미지 저장, 컨트롤 + c 로 이미지 복사 기능 제공함

import sys
import cv2

print('Hello OpenCV', cv2.__version__) # 버전 확인

img = cv2.imread('cat.bmp') # 파일을 불러와 img 변수에 저장

#예외 처리 (이미지 못 불러 왔을 때)
if img is None:
    print('Image load Failed')
    sys.exit()

cv2.namedWindow('image') # 'image'라는 이름의 윈도우 창 생성
cv2.imshow('image', img) # 'image'윈도우 창에 img 출력
cv2.waitKey() # 키보드 입력 있을 때 까지 대기

cv2.destroyAllWindows() #생성된 모든 창을 닫음

 

출력 결과

 

 


2. Open CV 기본 함수

 

  • cv2.imread(파일 이름, falgs = None)

    - 기능 : 영상 파일 불러오기

    - flags 옵션
       - cv2.IMREAD_COLOR (기본, BRG 컬러)
       - cv2.IMREAD_GRAYSCALE (흑백)
       - cv2.IMREAD_UNCHANGED(속성 그대로)

 

  • cv2.imwrite(저장할 파일 이름, 저장할 데이터)

    - 기능 : 영상 파일 저장하기

 

  • cv2.namedWindow(생성할 윈도우 창 이름, flags = None)

    - 기능 : 새로운 윈도우 창 띄우기

    - flags 옵션

       - cv2.WINDOW_NORMAL  영상 크기를 창 크기에 맞게 지정(마우스로 움직여서 크기 조정 가능)

       - cv2.WINDOW_AUTOSIZE 창 크기를 영상 크기에 맞춰 띄움 (기본값)

 

  • cv2.destroyALLWindows()

    - 기능 : 모든 윈도우 창 닫기 

    - cv2.destroyWindow(윈도우 창 이름)  : 특정 창 하나 닫음

 

  • cv2.imshow(윈도우창 이름, 출력할 데이터)

     - 기능 : 영상 출력하기

     - cv2.waitKey() 함수 호출해야 화면에 영상이 나타남 

     - 윈도우창 이름 없으면 창을 새로 만들어서 출력함

     - nint16, int32 자료형 행렬의 경우, 행렬 원소 값을 255로 나눠서 출력

     - float32, float64 자료형 행렬의 경우, 행렬 원소 값에 255를 곱해서 출력

 

  • cv2.waitKey(delay=None)

     - 기능 : 키보드 입력 대기

     - delay : ms 단위

     - 리턴 값 : 눌린 키 값(아스키 코드), 키가 눌리지 않으면 -1 

     - 주요 아스키 코드 : 27(ESC), 13(Enter)

     - 특정키 입력 받으면 멈추는 코드 ( 아래 코드는 q 입력하면 창 사라짐)

while True:
	if cv2.waitKey() == ord('q'):
    	break