상세 컨텐츠

본문 제목

OpenCV 주요 함수 설명

영상처리/OpenCV Python

by cepiloth 2021. 5. 12. 10:39

본문

728x90
반응형

영상 파일 불러오기

cv2.imread(file, flags=Nonename) -> retval

- filename : 불러온 영상 파일 경로
- flags : 영상 파일 불러오기 옵션 플래그
- retval : 불러온 영상

flags description
cv2.IMREAD_COLOR BGR 컬러 영상으로 읽기(기본값)
shape = (rows, cols, 3)
cv2.IMREAD_GRAYSCALE 그레이스케일 영상으로 읽기
shape = (rows, cols)
cv2.IMREAD_UNCHANGED 영상 파일 속성 그대로 읽기
(e.g.) 투명한 png 파일 :

 

예제 1) flags 를 cv2.IMREAD_GRAYSCALE로 변경하면 그레이 스케일 영상으로 읽어 준다.

import sys
import cv2

print('Hello, OpenCV', cv2.__version__)

img = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
#imread 는 imageread 의 약어로 이미지를 여는 함수

if img is None:
    print("이미지 로드가 실패 했습니다.")
    sys.exit()

cv2.namedWindow('image')
cv2.imshow('image', img)
cv2.waitKey() #키입력이 들어올 때 까지 멈춘다

cv2.destroyAllWindows()

 

출력결과

 

영상 파일 저장하기

cv2.imwrite(filename, img, params=None) -> retval

- filename : 저장할 영상 파일 이름(문자열)
- img : 저장할 영상 데이터 (numpy.ndarry)
- params : 파일 저장 옵션 지정 (속성 & 갑의 정수 쌍)
e.g) cv2.IMWRITE_JPEG_QUALITY, 90] : JPG 파일 압축률을 90%로 지정
- retval 정상적으로 저장하면 True, 실패하면 False

예제 2) 그레이 스케일 영상으로 입력 받고 png 로 저장하는 코드

import sys
import cv2

print('Hello, OpenCV', cv2.__version__)

img = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
#imread 는 imageread 의 약어로 이미지를 여는 함수

if img is None:
    print("이미지 로드가 실패 했습니다.")
    sys.exit()

cv2.namedWindow('image')
cv2.imshow('image', img)

cv2.imwrite('cat_gray.png', img) # png 파일로 저장

cv2.waitKey() #키입력이 들어올 때 까지 멈춘다

cv2.destroyAllWindows()

코드를 실행하고 파일탐색기로 확인해 보면 cat_gray.png 파일이 생성 된 것을 확인 할 수 있다.

 

새 창 뛰우기

cv2.namedWindow(winname, flags=None) -> None

- winname : 창 고유 이름(문자열)
- flags : 창 속성 지정 플래그

flags description
cv2.WINDOW_NORMAL 영상 크기를 창 크기에 맞게 지정
cv2.WINDOW_AUTOSIZE 창 크기를 영상 크기에 맞게 변경 (기본값)

AUTOSIZE 의 경우 창사이즈를 변경 할 수 없다

 

창 닫기

cv2.destoryWindow(winname) -> None
cv2.destoryAllWindows() -> None

- winname : 닫고자 하는 창이름
- 참고 사항
cv2.destoryWindow() 함순느 지정한 창 하나만 닫고, cv2.destoryAllWindows() 함수는 열려있는 모든 창을 닫음, 일반적인 경우 프로그램 종료 시 운영 체제에 의해 열려 있는 모든 창이 자동으로 닫힘

 

창 위치 이동

cv2.moveWindow(winname, x, y) -> None

- winname: 창 이름
- x, y : 이동할 위치 좌표

 

창 크기 변경

cv2.resizeWindow(winname, width, height) -> None

- winname : 창이름
- width : 변경할 창의 가로 크기
- height : 변경할 창의 세로 크기
- 참고 사항
창 생성 시 cv2.WINDOW_NORMAL 속성으로 생성되어야 동작
영상 출력 부분의 크기만 고려함 (제목 표시줄, 창 경계는 고려되지 않음)

 

영상 출력하기

cv2.imgshow(winname, mat) -> None

- winname : 영상을 출력할 대상 창이름
- mat : 출력할 영상 데이터 (numpy.ndarry)
- 참고사항
uint16, int32 자료형 행렬의 경우, 행렬 원소 값을 255로 나눠서 출력
float32, float64 자료형 행렬의 경우, 행렬 원소 값에 255를 곱해서 출력
만약 winname에 해당하는 창이 없으면 창을 새로 만들어서 영상을 출력함
Windows 운영체제에서는 Ctrl + C (복사), Ctrl + S(저장) 지원
실제로는 cv2.waitKey() 함수를 호출해야 화면에 영상이 나타남

 

키보드 입력 대기

cv2.waitKey(delay=None) -> retval

- delay : 밀리초 단위 대기시간. delay <= 0 이면 무한히 기다림. 기본값은 0.
- retval : 눌린 키 값(ASCII code). 키가 눌리지 않으면 -1.
- 참고 사항
cv2.waitKey() 함수는 OpenCV 창이 하나라도 있을 때 동작함
특정 키 입력을 확인하려면 ord() 함수를 이용

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

주요 특수키 코드: 27(ESC), 13(ENTER), 9(TAB)

 

728x90
반응형

관련글 더보기

댓글 영역