728x90
이미지 축소
pyrDown 을 사용하며 이미지를 축소합니다.
cv2.pyrDown(src, dst=None, dstsize=None, borderType=None)
- src: input size
- dstsize: 축소 사이즈 (default: 2배 축소)
import cv2
import numpy as np
import os
_path = os.path.join('img','img.jpg')
src = cv2.imread(_path)
dst = cv2.pyrDown(src)
dst2 = cv2.resize(src, None, fx=0.5, fy=0.5)
print(src.shape)
print(dst.shape)
print(dst2.shape)
cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.imshow('dst2', dst2)
cv2.waitKey()
cv2.destroyAllWindows()
(832, 602, 3)
(416, 301, 3)
(416, 301, 3)
dst = cv2.pyrDown(src)
dst2 = cv2.resize(src, None, fx=0.5, fy=0.5)
피라미드 만들기
입력 이미지의 h/2, w 의 결과 이미지를 생성하고, 그 안에 축소해서 계속 추가할 것입니다.
import cv2
import numpy as np
import os
_path = os.path.join('img','img.jpg')
src = cv2.imread(_path)
h, w = src.shape[:2]
dst = np.full((int(h/2), w, 3), (255, 255, 255), dtype=np.uint8)
d1 = cv2.pyrDown(src)
h, w = d1.shape[:2]
dst[:h, :w] = d1[:,:]
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
이미지를 추가했을 때 끝 X 좌표만 기억하면 쉽게 구현할 수 있습니다.
그리고 다음 이미지를 추가할 때 마다 X 좌표를 더하면 되겠죠.
import cv2
import numpy as np
import os
_path = os.path.join('img','img.jpg')
src = cv2.imread(_path)
h, w = src.shape[:2]
dst = np.full((int(h/2), w, 3), (255, 255, 255), dtype=np.uint8)
cnt, x = 0, 0
d = src.copy()
while cnt < 5:
d = cv2.pyrDown(d)
h, w = d.shape[:2]
dst[:h, x:x+w] = d[:,:]
x += w
cnt += 1
cv2.imshow('pyramid', dst)
cv2.waitKey()
cv2.destroyAllWindows()
근데 아래 비어있는 곳이 허전해서 채워보려합니다.
결과창의 height 을 축소된 이미지의 height 과 나누어서 그 만큼 반복하면 되겠죠.
import cv2
import numpy as np
import os
_path = os.path.join('img','img.jpg')
src = cv2.imread(_path)
h, w = src.shape[:2]
dst = np.full((int(h/2), w, 3), (255, 255, 255), dtype=np.uint8)
rh, rw = dst.shape[:2]
cnt, x, y = 0, 0, 0
d = src.copy()
while cnt < 5:
d = cv2.pyrDown(d)
h, w = d.shape[:2]
yc = rh / h
for i in range(int(yc)):
y = h*i
dst[y:y+h, x:x+w] = d[:,:]
x += w
cnt += 1
cv2.imshow('pyramid', dst)
cv2.waitKey()
cv2.destroyAllWindows()
'OpenCV' 카테고리의 다른 글
파이썬 OpenCV 이미지에 글자 출력하기 : 한글 출력 (PIL) (0) | 2020.07.24 |
---|---|
파이썬 OpenCV 를 위한 Numpy 정리 (0) | 2020.07.24 |
파이썬 OpenCV 기하학적 변환 알아보기 -1 : 확대축소 / 대칭 / 이동 / 회전 (0) | 2020.07.24 |
파이썬 OpenCV 이미지 필터링 알아보기 : blur, GaussianBlur, medianBlur, bilateralFilter (1) | 2020.07.14 |
파이썬 OpenCV 트랙바 사용하기 (1) | 2020.07.14 |