Programming/OpenCV

[OpenCV-python] 1. Getting Started with Images

JinWooHong Dev 2021. 6. 7. 00:00

이번 실습에서는 

  • 이미지 파일 읽기 (cv::imread)
  • OpenCV 창에 이미지 띄우기 (cv::imshow)
  • 이미지 파일 쓰기 (cv::imwrite)

에 대해서 학습해볼 것이다.

 

jpg 파일의 이미지를 준비한다.

해당 실습에서는 위 그림을 사용

 

전체 소스 코드

import cv2 as cv
import sys


img = cv.imread("jpg file path")  #ex) cv.imread(r'C:\Users\starry_night.jpg')

if img is None:
    sys.exit("Could not read the image.")

cv.imshow("Display window", img)

k = cv.waitKey(0)

if k == ord("s"):
    cv.imwrite("starry_night.png", img)

 

설명

img = cv.imread('이미지 파일 경로')

imread 함수는 이미지 파일을 로드할 때 사용된다. 첫번째 argument에는 파일 경로를 입력해주어야한다. 두번째  argument는 선택적이며 이미지를 원하는 형식으로 지정한다.

  • IMREAD_COLOR : 이미지를 BGR 8bit 형식으로 불러온다. 이것은 default 값이다. 
  • IMREAD_UNCHANGED : alpha channel을 포함시켜 로드한다.
  • IMREAD_GRAYSCALE : 이미지의 intensity를 하나로 로드한다.

 

cv.imshow("Display window", img)
k = cv.waitKey(0)

imshow 함수는 이미지를 보여주는데 사용을 한다. 첫번째 argument는  윈도우창의 제목을 나타내고 두번째 argument는 보여질 이미지를 나타낸다.

우리가 키를 입력할 때까지 창이 보여지길 원하기 때문에 우리는 waitkey 함수를 사용한다. waitkey 함수의 파라미터는 얼마나 오래 보여질 지를 결정한다.(milliseconds로 측정. 즉, 1초는 1000) 해당 값이 0이면 영원히 기다린다. 키가 입력되면 값을 반환한다.

 

if k == ord("s"):
    cv.imwrite("starry_night.png", img)

s키가 입력되었을 때 imwrite 함수를 통해 사진을 저장한다. 첫번째 argument는 파일 경로, 두번째 argument는 객체(이미지)이다.

 

실행 결과

 

s를 눌렀을 때 창이 닫히고 png 파일로 저장되는 것을 확인할 수 있다.

 

 

오류

 

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape 

다음과 같은 오류가 뜨는 경우 파일 경로를 cv.imread("C:\user\img.jpg")에서 

"C:\user\img.jpg"를 "C:\\user\\img.jpg"로 바꿔주거나

cv.imread("C:\user\img.jpg")를 cv.imread(r"C:\user\img.jpg")로 바꿔주면 된다.