如何在openv中实现一维卷积

How to implemet 1D convolution in opencv?

本文关键字:实现 一维 卷积 openv      更新时间:2023-10-16

有没有办法在OpenCV中实现1D信号的卷积?

正如我所看到的只有filter2D,但我正在寻找像Matlab的convn这样的东西。

对于一维卷积,你可能想看看np.convolve。

请看这里:https://docs.scipy.org/doc/numpy/reference/generated/numpy.convolve.html

需要一维卷积的Python OpenCV程序可以很容易地使用它。

您总是可以将1D向量视为2D mat,因此只需调用opencv build-it函数即可解决问题。

下面是我用来平滑直方图的代码片段。

# Inputs: 
#     gray = a gray scale image
#     smoothing_nbins = int, the width of 1D filter
# Outputs:
#     hist_sm = the smoothed image histogram
hist = cv2.calcHist([gray],[0],None,[256],[0,256])
hist_sm = cv2.blur(hist, (1, smoothing_nbins))

可以看到,这里唯一需要的技巧是将一个过滤器维度设置为1。

据我所知,如果您使用convolve2D仅与1D矩阵,它仍然有效。但根据你的具体工作,它可能不是。