예제 영상 파일

choco.jpg

예제 파일은 아무 이미지 파일로 사용하셔도 됩니다. 저는 귀여운 강아지 초코로 진행해볼 예정입니다.

파일을 다운받으셔서 같은 환경(실행하는 파이썬 디렉터리)에 저장을 시켜 둡니다.

(만약 다른 곳에 있다면 경로를 아셔야 합니다)

 

imread 함수

지난 포스팅에서, imread 함수에 대해서...

- imread

imread 함수는 image read의 약자로, 이미지를 읽어 오는 함수입니다.

img = cv2.imread('choco.jpg')

라고 간단히 설명을 드렸습니다. 추가적으로 설명을 드리자면, imread 함수에서는 flags를 통해서 이미지 타입을 지정해줄 수 있습니다.

타입은 다음과 같이 여러가지가 있지만, 가장 대표적으로 사용하는 3가지(빨간색 표시)에 대해서 설명하겠습니다.

 

IMREAD_COLOR

IMREAD_GRAYSCALE

IMREAD_UNCHANGED
IMREAD_ANYDEPTH
IMREAD_ANYCOLOR
IMREAD_LOAD_GDAL
IMREAD_REDUCED_GRAYSCALE_2
IMREAD_REDUCED_COLOR_2
IMREAD_REDUCED_GRAYSCALE_4
IMREAD_REDUCED_COLOR_4
IMREAD_REDUCED_GRAYSCALE_8
IMREAD_REDUCED_COLOR_8
IMREAD_IGNORE_ORIENTATION

 

- IMREAD_COLOR

 

첫 번째로, 알아볼 flags는 IMREAD_COLOR입니다.

 

imread 함수에 flags를 지정을 안 해주게 되면 default값으로 설정되는 기본값이며 3 채널 값인 (BGR)로 표현되는 옵션입니다. 코드를 통해 보면, 다음과 같이 지정해 줄 수 있습니다.

img_color = cv2.imread('choco.jpg')
img_color = cv2.imread('choco.jpg', cv2.IMREAD_COLOR)
cv2.imshow('img1', img_color)
cv2.waitKey()

이미지 결과 :

- IMREAD_GRAYSCALE

 

두 번째로, 알아볼 flags는 IMREAD_GRAYSCALE입니다. 흑백사진처럼 색상 정보가 없이 오직 밝기 정보만으로 구성된 이미지 파일로써,

밝기 정보를 256단계로 변환하여 보여줍니다.

img_gray = cv2.imread('choco.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('img2', img_gray)
cv2.waitKey()

이미지 결과 :

 

- IMREAD_UNCHANGED

마지막으로 알아볼 flags는 IMREAD_UNCHANGED입니다. UNCHANGE를 보면 알 수 있듯이 원본 그대로 출력을 한다는 것입니다.

먼저 코드와 결과를 확인해보도록 하겠습니다.

img_uc = cv2.imread('choco.jpg', cv2.IMREAD_UNCHANGED)
cv2.imshow('img1', img_uc) # image show -> imshow, 우리가 뛰울 윈도우창에 img 를 보여줘라
cv2.waitKey()

IMREAD_COLOR와 결과가 같은 것처럼 보이지만, IMREAD_COLOR는 3 채널 값인 (BGR)로 변경이 되어서 보여주지만, IMREAD_UNCHANGED는 색상값 변경 없이 원본사진 그대로를 출력해주는 것입니다.

추가적으로, 투명한 png 파일 등에서, alpha channel까지 포함하여 읽어 올 수 있다는 특징이 있습니다.

 

나머지 flags 타입은 짧게나마 글로 설명 드리도록 하겠습니다만, 거의 사용하지는 않습니다.

 

IMREAD_ANYDEPTH : 대응되는 depth에 따라 16/32비트 이미지로 로드 아님 8비트로 읽는다.

IMREAD_ANYCOLOR : 이미지를 가능한 칼라 포멧으로 읽는다.

IMREAD_LOAD_GDAL : 이미지를 GDAL 드라이버를 활용하여 읽는다. (GDAL : 지도관련 이미지 처리)

IMREAD_REDUCED_GRAYSCALE_2 : 1 채널, 1/2 크기, GRAYSCALE 적용

IMREAD_REDUCED_GRAYSCALE_4 : 1 채널, 1/4 크기, GRAYSCALE 적용

IMREAD_REDUCED_GRAYSCALE_8 : 1 채널, 1/8 크기, GRAYSCALE 적용

IMREAD_REDUCED_COLOR_2 : 3 채널, 1/2 크기, BGR COLOR 이미지 사용

IMREAD_REDUCED_COLOR_4 : 3 채널, 1/4 크기, BGR COLOR 이미지 사용

IMREAD_REDUCED_COLOR_8 : 3 채널, 1/8 크기, BGR COLOR 이미지 사용

 

- imwrite

 

imwrite 함수는, 이미지를 저장할 때 사용 합니다. 우리가 변환한 이미지를 저장하고 싶으면 다음과 같이 사용하면 됩니다.

함수 사용방법은 cv2.imwrite(새로 만들 파일 이름 및 형식, 저장할 이미지, 압축률(옵션)) 입니다.

 

다음 예제는, 그레이 스케일로 변환한 img_gray파일은 new_choco.jpg로 90%압축을 하여 저장하는 것입니다.

cv2.imwrite('new_choco.jpg', img_gray, params=[cv2.IMWRITE_JPEG_QUALITY, 90])
반응형

+ Recent posts