画像を補完方法を指定して1/2に縮小してみます。
オリジナルが白黒の網掛け状になっている部分がINTER_NEAREST以外は中間色の灰色になっていますが、INTER_NEARESTは白になってしまいました。
INTER_CUBICとINTER_LANCZOS4では斜め黒線に白の縁取りのような物が見えます。
INTER_LINEARとINTER_AREAの場合、これといって特徴のない縮小結果になりました。
スクリプト
#!/usr/bin/env python3
# coding: utf8
import cv2
import numpy as np
h = 600
w = 800
canvas = np.zeros((h,w), dtype=np.uint8)
for x in range(h):
for y in range(w):
xx = x % 2
yy = y % 2
if (xx == 1 and yy == 0) or (xx == 0 and yy == 1):
canvas[x,y] = 0
else:
canvas[x,y] = 255
if (x == y):
canvas[x,y] = 0
if (x == 100):
canvas[x,y] = 0
if (y == 100):
canvas[x,y] = 0
cv2.imwrite('origin.png', canvas)
linear = cv2.resize(canvas, dsize=(int(w/2),int(h/2)), interpolation=cv2.INTER_LINEAR)
cv2.imwrite('inter_linear.png', linear)
area = cv2.resize(canvas, dsize=(int(w/2),int(h/2)), interpolation=cv2.INTER_AREA)
cv2.imwrite('inter_area.png', area)
cubic = cv2.resize(canvas, dsize=(int(w/2),int(h/2)), interpolation=cv2.INTER_CUBIC)
cv2.imwrite('inter_cubic.png', cubic)
nearest = cv2.resize(canvas, dsize=(int(w/2),int(h/2)), interpolation=cv2.INTER_NEAREST)
cv2.imwrite('inter_nearest.png', nearest)
lanczos4 = cv2.resize(canvas, dsize=(int(w/2),int(h/2)), interpolation=cv2.INTER_LANCZOS4)
cv2.imwrite('inter_lanczos4.png', lanczos4)
コメント