Please Enable JavaScript!
Gon[ Enable JavaScript ]

파이썬(Python) OpenCV 파일 읽기와 저장하기

파이썬 Python
반응형

OpenCV 에서 가장 기본적인 기능인 이미지를 읽고 저장하는 함수에 대해 알아보겠습니다. imread() 함수로 이미지를 읽고, imwrite() 함수를 편집한 이미지를 저장합니다.

 


 

 

1. 이미지 파일 읽기

 

▼ OpenCV 모듈인 cv2 import 문으로 선언합니다. 이미지를 읽기 위한 cv2 모듈의 함수는 cv2.imread(filename, flag) 입니다.

 

cv2.imread(filename, flag)

l  filename : 이미지파일의 경로를 의미한다.

l  flag : 이미지를 어떻게 읽을지 결정하는 옵션

-      cv2.IMREAD_COLOR : Default 설정값으로 컬러 색상을 읽는다.

-      cv2.IMREAD_GRAYSCALE (0) : 명암도 영상인 흑백 이미지로 변환해서 읽는다.

-      cv2.IMREAD_UNCHAGED (-1) : 파일에 지정된 컬러 영상을 읽는다. 투명 정보인 alpha channel 도 읽을 수 있다.

-      cv2.IMREAD_ANYCOLOR (4) : 파일에 정의된 타입으로 읽는다.

l  return : image 객체 행열인 numpy.ndarray 반환 

import cv2

src = cv2.imread('images/bg.jpg', cv2.IMREAD_UNCHANGED)

 

다음은 이미지를 읽은 후 변수에 저장한 반환값이 사용자가 예상한 결과값인지 판단하기 위한 소스입니다. imread() 함수가 읽은 것이 이미지가 아닌 경우 None 을 반환하기 때문에 아래 소스로 오류를 할 수 있습니다. 

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

 

이미지를 화면에 보여주는 함수는 cv2.imshow() 입니다.

 

cv2.imshow(window title, image)

l  window title : 이미지를 보여주는 윈도우의 타이틀명

l  image : cv2.imread() 의 반환값으로 numpy.ndarray 배열 객체를 입력

 

▼ imread() 함수로 이미지를 읽은 뒤 numpy.ndarray 이미지 배열 영역을 잘라서 imshow() 로 화면에 보여 줍니다. 

import cv2

src = cv2.imread('images/bg.jpg', cv2.IMREAD_UNCHANGED)

if src is None:
    sys.exit("Could not read the image.")
 
# 이미지를 자르고 크기를 구한다.
roi = src[100:600, 200:400]
 
# 결과를 출력한다.
cv2.imshow('cut image', roi)

 

▼ imread() 함수로 이미지를 읽어올 때 사용한 flag 의 종류에 따른 결과값은 다음과 같습니다. 


 

 

2. 이미지 파일 저장하기

 

편집한 이미지나 동영상의 특정 프레임을 캡처해서 저장하고 싶을 때 cv2.imwrite() 함수를 사용합니다.

 

cv2.imwrite(filename, image)

l  filename : 저장할 이미지의 파일 제목

l  image : 이미지 객체 

# 결과값을 저장한다
cv2.imwrite('save_image.jpg', src)

 

전체 소스는 다음과 같습니다. 

import cv2
import sys

src = cv2.imread('images/bg.jpg', cv2.IMREAD_UNCHANGED)

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

# 이미지를 자르고 크기를 구한다.
roi = src[100:600, 200:400]
width, height, channel = roi.shape
print(width, height, channel)

# 자른 이미지를 소스 이미지에 붙인다.
src[0:width, 0:height] = roi

# 결과를 출력한다.
cv2.imshow('source', src)

# 결과값을 저장한다
cv2.imwrite('save_image.jpg', src)

cv2.waitKey(0)
cv2.destroyAllWindows()

 

소스에서 편집한 이미지를 저장한 결과입니다.


 

 

반응형
Posted by 녹두장군1
,