본문 바로가기

코딩/파이썬 opencv

opencv-python 003. imwrite()로 이미지 파일로 저장

 

opencv-python 패키지의 imwrite() 함수를 이용해 이미지를 파일로 저장해 본다.

 

아래의 예제 코드 실행을 위해 관련된 이미지가 다음의 경로에 존재함을 전제로 한다.

 

예제 코드 1

<코드 1>

# python 3.9.6
# opencv-python 4.5.3.56

import cv2 as cv

img = cv.imread('image/view1.jpg')

if img is not None:
    cv.imshow('My opencv-python', img)
    key = cv.waitKey()

    if key == ord('s'):
        cv.imwrite('image/myview.jpg', img)

 

<코드 1>은 image 디렉토리에 있는 view1.jpg 이미지 파일을 imread() 함수를 이용해 불러온 후 imshow() 함수로 화면에 출력한다.

 

화면에 출력된 이미지 창은 임의 키보드 입력이 발생하면 닫히게 된다.

만약 키보드에서 누른 키가 's' 키라면 화면에 출력된 이미지는 imgae 디렉토리 내 myview.jpg 이름으로 저장된다.

 

 

아래와 같이 view1.jpg 이미지 파일을 불러오고 이를 다시 저장하는 과정에서 데이터의 변경이 발생되는 듯하다.

 

 

Hex Editor로 두 이미지 파일의 데이터를 비교해 보면 같지 만은 않다.

 

예제 코드 2

<코드 2>

# python 3.9.6
# opencv-python 4.5.3.56

import cv2 as cv

img = cv.imread('image/view1.jpg')

if img is not None:
    cv.imshow('My opencv-python', img)
    key = cv.waitKey()

    if key == ord('s'):
        cv.imwrite('image/myview.jpg', img, (cv.IMWRITE_JPEG_QUALITY, 10))

 

<코드 2>는 imwrite() 함수의 세번째 파라미터 params의 사용 예이다.

 

imwrite(filename, img, params=None)

 

파라미터 params의 값을 (cv.IMWRITE_JPEG_QUALITY, 10)으로 정의한 후 이미지를 저장한 결과는 아래와 같고, 파일 크기는 14KB로 원본 크기 223KB 보다 약 16배 줄어 들었다.