我不知道如何解决 OpenCV Python 问题

I don't know how can I solve OpenCV Python problem

原来的作业是

Use np.array() to generate the following 8-bit image and obtain the result of applying the following mask: 
However, the edges are padded to zero. (cv2.BORDER_CONSTANT)

[[10, 20, 40, 50]
 [50, 20, 50, 20]
 [10, 10, 30, 60]
 [20, 40, 60, 70]]

(a) 3x3 average filter
(b) 3x3 gaussian filter, sigmaX=0
(c) If the results of (a) and (b) are M(x,y) and G(x,y), 
    respectively, calculate M(0,0) and G(0,0) and show that 
    they are consistent with the results of (a) and (b).

问题是,

(a) - 3x3 平均滤波器

(b) - 3x3 高斯滤波器,sigmaX=0

而(a)的结果是M(x,y),(b)的结果是G(x,y)

所以我应该证明 M(0, 0) 和 G(0, 0) 是正确的。

我写了代码,还是解决不了这个问题

我该如何解决这个问题....

代码-

import cv2
import numpy as np

src = np.array([[10, 20, 40, 50],
                 [50, 20, 50, 20],
                 [10, 10, 30, 60],
                 [20, 40, 60, 70]], dtype=np.uint8)

dst1 = cv2.blur(src, ksize=(3, 3), borderType=cv2.BORDER_CONSTANT)
dst2 = cv2.GaussianBlur(src, ksize=(3, 3), sigmaX=0, borderType=cv2.BORDER_CONSTANT)

print(dst1)
print(dst1[0][0])
print(dst2)
print(dst2[0][0])
print(dst1[0][0] == dst2[0][0])

结果-

M(0, 0) 为 11(dst1[0][0]) G(0, 0) 为 13(dst2[0][0])

我的意思是,我需要使 dst1[0][0] 和 dst2[0][0] 匹配。

但结果不匹配

抱歉我的英语不好.....

这是一个作业,所以我不会为你完全解决它,但这里有一些提示:

因此,卷积是滤波器内核与相同大小的像素邻域之间 per-element 乘积的总和。

at 0,0 - 给定零填充,后者看起来像这样:

0.0  0.0  0.0
0.0 10.0 20.0
0.0 50.0 20.0

一个 3x3 的盒子内核看起来像这样:

1.0/9 1.0/9 1.0/9 
1.0/9 1.0/9 1.0/9
1.0/9 1.0/9 1.0/9

所以,M(0,0) 是:

1.0/9 *  0.0 + 1.0/9 *  0.0 + 1.0/9 *  0.0 + 
1.0/9 *  0.0 + 1.0/9 * 10.0 + 1.0/9 * 20.0 +
1.0/9 *  0.0 + 1.0/9 * 50.0 + 1.0/9 * 20.0  == 11.11111

你必须证明 M(0,0) == dst1[0,0]

此处使用浮点值以避免舍入问题。请在您的 opencv 代码中使用 np.float32,而不是 np.uint8 来实现相同的目的。

这是高斯内核,希望你知道,现在该做什么,祝你好运;)