[OpenCV] 그림의 가로, 세로 길이를 비율대로 바꾸기 (resize, 파이썬)


그림 작업을 하다 보면 그림의 가로와 세로 길이를 비율에 맞추어서 바꾸어야 할 일도 생깁니다. 파이썬에서 OpenCV를 사용해서 다음과 같이 하시면 됩니다.


import cv2

import matplotlib.pyplot as plt

그림BGR = cv2.imread("그림파일.jpg")

그림RGB = cv2.cvtColor(그림BGR, cv2.COLOR_BGR2RGB)

새가로비율, 새세로비율 = 0.3, 1.7 # 좋아하는 숫자를 넣으세요

그림새크기 = cv2.resize(그림RGB, (0, 0), fx=새가로비율, fy=새세로비율)


# 이 아래 부분은 그림을 화면에 출력하기 위한 부분으로, OpenCV 알고리즘과는 상관이 없습니다.

plt.subplot(1, 2, 1) # 1행 2열에서 1번째 열

plt.imshow(그림RGB)


plt.subplot(1, 2, 2) # 1행 2열에서 2번째 열

plt.imshow(그림새크기)


plt.show()


참고하실만한 OpenCV 공식 설명서 링크입니다.

http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#resize



[OpenCV] 그림의 가로, 세로 길이 마음대로 바꾸기 (resize, 파이썬)


그림 작업을 하다 보면 그림의 가로와 세로 길이를 바꾸어야 할 일이 종종 생깁니다. 파이썬에서 OpenCV를 사용해서 다음과 같이 하시면 됩니다.


import cv2

import matplotlib.pyplot as plt

그림BGR = cv2.imread("그림파일.jpg")

그림RGB = cv2.cvtColor(그림BGR, cv2.COLOR_BGR2RGB)

새가로, 새세로 = 900, 300 # 좋아하는 숫자를 넣으세요

그림새크기 = cv2.resize(그림RGB, (새가로, 새세로))


# 이 아래 부분은 그림을 화면에 출력하기 위한 부분으로, OpenCV 알고리즘과는 상관이 없습니다.

plt.subplot(1, 2, 1) # 1행 2열에서 1번째 열

plt.imshow(그림RGB)


plt.subplot(1, 2, 2) # 1행 2열에서 2번째 열

plt.imshow(그림새크기)


plt.show()


참고하실만한 OpenCV 공식 설명서 링크입니다.

http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#resize



[OpenCV] 컬러 사진을 흑백으로 변환하기 (cvtColor, 파이썬)


컬러 사진을 흑백으로 변환하려면 원래는 Y = 0.299*R + 0.587*G + 0.114*B 라는 식을 사용해서 픽셀 하나하나마다 계산을 해야 합니다. 하지만 파이썬에서 OpenCV를 사용하면 흑백 변환을 쉽게 할 수 있습니다.


import cv2

import matplotlib.pyplot as plt

그림BGR = cv2.imread("그림파일.jpg")

그림RGB = cv2.cvtColor(그림BGR, cv2.COLOR_BGR2RGB)

그림흑백 = cv2.cvtColor(그림BGR, cv2.COLOR_BGR2GRAY)


# 이 아래 부분은 그림을 화면에 출력하기 위한 부분으로, OpenCV 알고리즘과는 상관이 없습니다.

plt.subplot(1, 2, 1) # 1행 2열에서 1번째 열

plt.imshow(그림RGB)

plt.xticks([]) # x축 좌표 숨김

plt.yticks([]) # y축 좌표 숨김


plt.subplot(1, 2, 2) # 1행 2열에서 2번째 열

plt.imshow(그림흑백, cmap='gray')

plt.xticks([]) # x축 좌표 숨김

plt.yticks([]) # y축 좌표 숨김


plt.show()


이렇게 하면 그림이 화면에 잘 표시됩니다. cmap='gray' 부분을 써 주어야 matplotlib이 흑백 사진을 제대로 출력합니다.



+ Recent posts