Python-OpenCV縮小と拡大

python コンピュータ
python

画像を1/2に縮小し2倍に拡大します。

#!/usr/bin/env python3
# coding: utf8

# 
# 縮小と拡大(補完方法指定)
# 

import cv2
import numpy as np

src_file = "00184.jpeg"

# グレイスケールで読み込み
src = cv2.imread(src_file, cv2.IMREAD_GRAYSCALE)
print(src.shape)
# (1200, 846)

# 高さ、幅を取得
h, w = src.shape

# 高さ、幅を偶数に
size = ((h + (h % 2)), (w + (w % 2)))
# 0(黒)で初期化
tmp = np.zeros(size, dtype=np.uint8)

# srcからdstへ画像をコピー
tmp[0 : src.shape[0], 0 : src.shape[1]] = src
print(tmp.shape)
# (1200, 846)


# 1/2に縮小
hh = int(tmp.shape[0] / 2)
ww = int(tmp.shape[1] / 2)
small = cv2.resize(tmp, (ww, hh), interpolation=cv2.INTER_AREA)
cv2.imwrite("00184_small.jpeg", small)
print(small.shape)
# (600, 423)


# 2倍に拡大
hh = int(small.shape[0] * 2)
ww = int(small.shape[1] * 2)
big  = cv2.resize(small, (ww, hh), interpolation=cv2.INTER_LANCZOS4)
cv2.imwrite("00184_big.jpeg", big)
print(big.shape)
# (1200, 846)

1/2して2倍するので最終的に同じサイズになりました。

コメント