OpenCV-Python (1) 주요 함수

hjwon·2023년 9월 2일
0

OpenCV-Python

목록 보기
1/6

📌 영상 파일 불러오기 - cv2.imread()

cv2.imread(filename, flags=None) -> retval
  • filename: 불러올 영상 파일 이름 (문자열)

  • flags: 영상 파일 불러오기 옵션 플래그
    ① cv2.IMREAD_COLOR : BGR 컬러 영상으로 읽기 (기본값) - shape = (rows, cols, 3)
    ② cv2.IMREAD_GRAYSCALE : 그레이스케일 영상으로 읽기 - shape = (rows, cols)
    ③ cv2.IMREAD_UNCHANGED : 영상 파일 속성 그대로 읽기 - (e.g.) 투명한 PNG 파일의 shape = (rows, cols, 4)

  • retval: 불러온 영상 데이터 (numpy.ndarray)


📌 영상 파일 저장하기 - cv2.imwrite()

cv2.imwrite(filename, img, params=None) -> retval
  • filename: 저장할 영상 파일 이름 (문자열)

  • img: 저장할 영상 데이터 (numpy.ndarray)

  • params: 파일 저장 옵션 지정 (속성&값의 정수 쌍)
    e.g) [cv2.IMWRITE_JPEG_QUALITY, 90] : JPG 파일 압축률을 90%로 지정

  • retval: 정상적으로 저장하면 True, 실패하면 False


📌 새 창 띄우기 - cv2.namedWindow()

cv2.namedWindow(winname, flags=None) -> None
  • winname: 창 고유 이름 (문자열)

  • flags: 창 속성 지정 플래그
    ① cv2.WINDOW_NORMAL : 영상 크기를 창 크기에 맞게 지정
    ② cv2.WINDOW_AUTOSIZE : 창 크기를 영상 크기에 맞게 변경 (기본값)


📌 창 닫기 - cv2.destroyWindow(), cv2.destroyAllWindows()

cv2.destroyWindow(winname) -> None
cv2.destroyAllWindows() -> None
  • winname: 닫고자 하는 창 이름

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


📌 창 위치 이동 - cv2.moveWindow()

cv2.moveWindow(winname, x, y) -> None
  • winname: 창 이름

  • x, y: 이동할 위치 좌표


📌 창 크기 변경 - cv2.resizeWindow()

cv2.resizeWindow(winname, width, height) -> None
  • winname: 창 이름

  • width: 변경할 창의 가로 크기

  • height: 변경할 창의 세로 크기

  • 참고사항
    - 창 생성 시 cv2.WINDOW_NORMAL 속성으로 생성되어야 동작
    - 영상 출력 부분의 크기만을 고려함 (제목 표시줄, 창 경계는 고려되지 않음)


📌 영상 출력하기 - cv2.imshow()

cv2.imshow(winname, mat) -> None
  • winname: 영상을 출력할 대상 창 이름

  • mat: 출력할 영상 데이터 (numpy.ndarray)

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


📌 키보드 입력 대기 - cv2.waitKey()

cv2.waitKey(delay=None) -> retval
  • delay: 밀리초 단위 대기 시간, delay≤0 이면 무한히 기다림, 기본값은 0

  • retval: 눌린 키 값(ASCII code), 키가 눌리지 않으면 -1

  • 참고사항
    - cv2.waitKey() 함수는 OpenCV 창이 하나라도 있을 때 동작
    - 특정 키 입력을 확인하려면 ord() 함수 이용
    - 주요 특수키 코드: 27(ESC), 13(ENTER), 9(TAB)

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



💻 BMP 파일 불러와서 출력하는 코드

import sys
import cv2

print('Hello OpenCV', cv2.__version__)

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

if img is None:   # 영상 파일 불러오기가 실패하면 에러 메시지를 출력하고 종료
	print('Image load failed!')
    sys.exit()

# 'image'라는 이름의 새 창을 만들고, 이 창에 img 영상을 출력하고, 키보드 입력이 있을 때까지 대기
cv2.namedWindow('image')
cv2.imshow('image', img)
cv2.waitKey()

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



profile
열공워니

0개의 댓글