juuuding

[Computer Vision & Deep Learning] OpenCV - 영상 형태 변환하고 크기 축소하기 본문

인공지능/cs231n

[Computer Vision & Deep Learning] OpenCV - 영상 형태 변환하고 크기 축소하기

jiuuu 2023. 10. 30. 15:07

 컴퓨터에서 컬러 영상 파일을 읽어와 흑백 영상으로 변환을 시킨 후, 영상의 크기를  원본 영상의 70%로 줄여보겠다.

[영상을 명암 영상으로 변환하기]

 먼저 imread로 영상을 불러온 후, cvtColor()로 컬러를 흑백으로 변경해준다. 여기서 첫 번째 인수 값에는 변환할 영상의 객체 이름을 입력해주고, 두 번째 인수 값에는 cv.COLOR_BGR2GRAY를 입력하여 컬러를 흑백으로 변환하라고 지시한다.

 참고로 cvtColor 함수가 영상을 명암 영상으로 변경할 때는 아래의 식을 이용한다.

I = round(0.299 * R + 0.587 * G + 0.114 * B) 

 위의 식을 가지고 BGR  3 채널의 값을 하나의 채널로 변경하여 명암 영상으로 변환하는 것이다.

 

[영상 크기 축소하기]

 이미지의 크기를 재조정 하기 위해 resize()를 이용해 줄 것이다. resize의 첫 번째 인수 값으로 영상의 객체 이름을 입력해주고, 두 번째 인수 값으로는 dsize를 사용하여 영상의 절대적인 크기를 지정해주어야 한다. 만약 dsize=(1000,1000)을 입력하면 가로, 세로가 1000인 이미지가 만들어질 것이다. 하지만 아래의 코드처럼 dsize=(0,0)을 입력한다면 영상의 비율을 지정하는 fx와 fy로 크기를 조절해준다. 예를 들어 dsize=(0,0), fx=0.7, fy=0.5로 작성했을 때는 원본 이미지 기준 가로 0.7배, 세로 0.5배인 이미지로 변경될 것이다. 

 

[새로운 이미지 파일에 저장하기]

 위와 같이 색과 크기를 변경해준 영상을 컴퓨터에 저장하기 위해서는 imwrite()를 이용하면 된다. imwrite의 첫 번째 인수 값에는 파일에 지어줄 이름을 작성하고, 두 번째 인수에는 저장하고 싶은 파일 객체를 입력해주어야 한다. 

 

[Code]

'''
영상 색상 변환하고 크기 축소하기
''' 

import cv2 as cv
import sys

img=cv.imread('resource/soccer.jpg')

if img is None:
    sys.exit("파일을 찾을 수 없습니다.")

# 컬러 이미지를 명암 이미지로 변경
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)

# 이미지의 크기 조정
gray_small=cv.resize(gray,dsize=(0,0),fx=0.7, fy=0.7)


# 이미지 파일에 저장
cv.imwrite('soccer_gray.jpg', gray)
cv.imwrite('soccer_gray_small.jpg', gray_small)

cv.imshow('Color image', img)
cv.imshow('Gray image', gray)
cv.imshow('Gray image small', gray_small)

cv.waitKey()
cv.destroyAllWindows()