본문 바로가기
OpenCV

OpenCV 이미지 파일 불러와서 출력하기

by Kwonys 2024. 3. 14.
728x90
반응형
import cv2
import sys
import numpy as np

print('openCV Version', cv2.__version__)

import os
os.chdir('C:\coding\OpenCV\ch01') # can't open/read file: check file path/integrity 오류 해결을 위해 경로 설정


img = cv2.imread('cat.bmp')

if img is None: # 이미지 없으면
    print('Image Load failed !')
    sys.exit()  # 종료

cv2.namedWindow('image')    # 'img' 이름을 가진 window 창 생성
cv2.imshow('image', img) # imshow('보여줄 창', 보여줄 이미지)
cv2.waitKey()   # 키보드 입력 기다림(다음 행동 전까지 창 띄워둠)과 동시에 영상(이미지)가 실제로 보여질 수 있게 함

cv2.destroyAllWindows() # 화면의 모든 창 닫기

이제 각 함수를 자세히 살펴보자.

 

1. 이미지 파일 불러오기

cv2.imread(filename, flags=None)

   flags : 영상(이미지) 불러오기 옵션 플래그

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

 

2. 이미지 파일 저장하기

cv2.imwrite(filename, img, params=None)

예를 들어 위의 cat.bmp 파일을 흑백의 png 파일로 저장하고 싶다면

cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('cat_gray.png', img)

이런 식으로 간단히 실행 가능하다.

 

3. 새 창 띄우기

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

   flags: 창 속성 지정 플래그

cv2.WINDOW_AUTOSIZE  창 크기를 영상 크기에 맞게 변경 (Default)
cv2.WINDOW_NORMAL 영상 크기를 창 크기에 맞게 지정

 

4. 창 닫기

v2.destroyWindow(winname) -> None
cv2.destroyAllWindows() -> None

   winname: 닫고자 하는 창 이름

 

 cv2.destroyWindow() 함수는 지정한 창 하나만 닫고, cv2.destroyAllWindows() 함수는 열려 있는 모든 창을 닫음.

 일반적인 경우 프로그램 종료 시 운영 체제에 의해 열려 있는 모든 창이 자동으로 닫힘

 

5. 이미지 출력하기

cv2.imshow(winname, mat) -> None

만약 winname에 해당하는 창이 없으면(cv2.nameWindow를 선언하지 않았다면) 창을 새로 만들어서 영상을 출력함

 

6. 키보드 입력 대기

cv2.waitKey(delay=None) -> retval

  delay: 밀리초 단위 대기 시간. delay ≤ 0 이면 무한히 기다림. 기본값은 0.

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

 

•  참고 사항

waitKey는 imshow 뒤에 와야 함

 cv2.waitKey() 함수는 OpenCV 창이 하나라도 있을 때 동작함

 특정 키 입력을 확인하려면 ord() 함수를 이용

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

 

ex) q를 눌러야 이미지 창이 사라짐

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

 


나의 경우 흔한 오류라고 생각되지는 않지만 can't open/read file: check file path/intergrity 오류가 발생하여 찾아본 결과 

os.chdir('파일이 속한 폴더 주소')를 통해 경로를 변경해주고 진행하여 오류를 해결할 수 있었습니다.

 

오류해결 방법: https://github.com/opencv/opencv/issues/21770

 

cv::findDecoder imread_: can't open/read file: check file path/integrity · Issue #21770 · opencv/opencv

System information (version) OpenCV => 4.5.5 Operating System / Platform => Windows 64 Bit/Anaconda 4.1.2 Compiler => Spyder/anaconda prompt Detailed description Opencv doesnt open videos. It works...

github.com

 

 

 

728x90
반응형