import cv2
# 이미지 불러오기
image = cv2.imread("input_image.jpg", cv2.IMREAD_GRAYSCALE) # 가로x세로 = (1000,1000)이라고 가정
# 이미지의 크기를 반으로 줄이기
resized_image = cv2.resize(image, dsize=(0, 0), fx=0.5, fy=0.5)
# 결과 이미지 출력
cv2.imshow("Resized Image", resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
우선 결론을 먼저 말하자면
cv2.resize()를 통해 이미지의 크기를 조절하기 위해서는 dsize와 [fx,fy] 둘 중 하나만 사용해도 된다.
dsize=(0,0)으로 설정을 할 경우, 이미지의 크기를 0x0으로 설정하겠다는 뜻이 아니라 가로 세로 크기를 설정하지 않겠다는 뜻이다.
그 대신 fx = 0.5, fy = 0.5를 통해 가로 픽셀 크기 500, fy=0.5를 통해 세로 픽셀 크기 500로 설정을 하고 있다.
고로 위 코드는 아래와 같이 수정해도 똑같은 결과를 낳는다.
import cv2
# 이미지 불러오기
image = cv2.imread("input_image.jpg", cv2.IMREAD_GRAYSCALE) # 가로x세로 = (1000,1000)이라고 가정
# 이미지의 크기를 반으로 줄이기
resized_image = cv2.resize(image, None, fx=0.5, fy=0.5) # None으로 수정됨
# 결과 이미지 출력
cv2.imshow("Resized Image", resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.resize에서 dsize와 [fx,fy]를 동시에 사용할 경우, [fx,fy]는 dszie에 영향을 주지 못한다.
gray_small1 = cv.resize(gray,dsize=(500,200),fx=2.0,fy=2.0)
gray_small2 = cv.resize(gray,dsize=(500,200))
print("gray_small1",gray_small1.shape)
print("gray_small2",gray_small2.shape)
print(gray_small1 == gray_small2)
[fx,fy]를 설정을 한 것이랑 하지 않은 것이랑 이미지의 결과가 다르지 않음을 확인할 수가 있다.
그외 여러 [fx,fy]의 상황들을 아래의 코드에 정리해 두었다.
가정: 원본 이미지 크기가 400x300
image = cv2.imread("input_image.jpg", cv2.IMREAD_GRAYSCALE)
# 다양한 fx, fy 값에 따른 이미지 크기 조절
resized_image_1 = cv2.resize(image, None, fx=0.5, fy=0.5) # 축소
resized_image_2 = cv2.resize(image, None, fx=1, fy=1) # 크기 변경 없음
resized_image_3 = cv2.resize(image, None, fx=2, fy=2) # 확대
# 결과 이미지 크기 출력
print("Resized Image 1 Shape:", resized_image_1.shape)
print("Resized Image 2 Shape:", resized_image_2.shape)
print("Resized Image 3 Shape:", resized_image_3.shape)
'딥러닝(Deep Learning) > OpenCV-Python' 카테고리의 다른 글
cv.namedWindow, cv.setMouseCallback의 관계(Feat, winname, 윈도우 창 구분자) (1) | 2024.02.06 |
---|---|
cv.CAP_DSHOW(Feat. DirectShow API,윈도우, Windows) (0) | 2024.02.05 |
OpenCV GPU 연동(Feat. Cmake, Cuda toolkit, cudnn) (0) | 2024.01.31 |
cv.CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE(Feat. findContours() ) (2) | 2024.01.04 |
cv2.cvtColor(grayscale 변환)의 내부 원리(feat. Luma) (0) | 2023.12.28 |