gpt4 book ai didi

c++ - OpenCV 中的 Matlab Conv2 等价物

转载 作者:搜寻专家 更新时间:2023-10-31 01:10:14 24 4
gpt4 key购买 nike

我一直在尝试使用 OpenCV 对二维矩阵进行卷积。我实际上经历了这段代码 http://blog.timmlinder.com/2011/07/opencv-equivalent-to-matlabs-conv2-function/#respond但只有在肯定的情况下它才会产生正确的答案。在 OpenCV 或 C++ 的 Matlab 中是否有像 conv2 这样的简单函数?

这是一个例子:

A= [
1 -2
3 4
]

我想将它与 [-0.707 0.707] 进行卷积

Matlab conv2 的结果是

 -0.7071    2.1213   -1.4142
-2.1213 -0.7071 2.8284

在 OpenCV 或 C++ 中计算此输出的一些函数?我将不胜感激。

最佳答案

如果你想要一个独家的 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。看到输出比输入大。

关于c++ - OpenCV 中的 Matlab Conv2 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com