使用Python的cv2.resize:插值方法到底是什么?

时间:2018-12-14 16:27:17

标签: python cv2

给定一个表示图像的9x9矩阵(其条目为[R,G,B]),我想创建一个尺寸为3x3的新的调整大小的图像,每个条目的计算如下:

  1. 将9x9矩阵分为9个3x3矩阵块

  2. 计算每个3x3矩阵块的平均值(按分量计)

  3. 使用这些方法创建3x3图像。

到目前为止,我已经在Python 3.6中使用了cv2库

image_blurred = cv2.resize(original_image, (3,3), interpolation=cv2.INTER_AREA)

但是我不确定cv2.INTER_AREA到底做什么。

您能给我一些信息吗? (有一些信息here,但没有提供太多详细信息。)

非常感谢。

1 个答案:

答案 0 :(得分:0)

似乎插值cv2.INTER_AREA会进行平均。如果您有兴趣,我在下面写了一个测试。

import cv2
import numpy as np
n = 9
grid_colors = []
for _ in range(n):
    column = []
    for _ in range(n):
        colors = []
        for k in range(3):
            colors.append(np.random.randint(256))
        column.append(colors)
    grid_colors.append(column)

moy = []
for a in range(3):
    col = []
    for b in range(3):
        colors = []
        for c in range(3):
            colors.append(round(sum([grid_colors[i+3*a][j+3*b][c] for i in range(3) for j in range(3)]) / 9))
        col.append(colors)
    moy.append(col)

image_blurred =  cv2.resize(np.array(grid_colors, dtype = np.uint8), (len(grid_colors[0]) // 3, len(grid_colors) // 3), interpolation=cv2.INTER_AREA)
print("image blurred: ")
print(image_blurred)
print("grid_colors: ")
print(grid_colors)