如果您想要独家 OpenCV 解决方案,请使用CV2.filter2D功能。但是,如果您想获得与 matlab 一样的正确输出,则应该调整 borderType 标志。
>>> A = np.array([ [1,-2],[3,4] ]).astype('float32')
>>> A
array([[ 1., -2.],
[ 3., 4.]], dtype=float32)
>>> B = np.array([[ 0.707,-0.707]])
>>> B
array([[ 0.707, -0.707]])
>>> cv2.filter2D(A2,-1,B,borderType = cv2.BORDER_CONSTANT)
array([[-0.70700002, 2.12100005, -1.41400003],
[-2.12100005, -0.70700002, 2.82800007]], dtype=float32)
borderType 很重要。要找到卷积,您需要数组外部的值。如果你想得到类似matlab的输出,你需要传递cv2.BORDER_CONSTANT。查看输出的大小大于输入。