gpt4 book ai didi

c++ - Matlab的filter2在OpenCV中的等效函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:27:20 25 4
gpt4 key购买 nike

我需要将以下 matlab 代码转换为 OpenCV 并获得完全相同的结果。

在 matlab 中:

A = [1 2 3];
f = [4 5 6];
result = filter2(f, A);

结果如下:

result = [17    32    23]

在 OpenCV 中,我尝试了这些行:

cv::Mat A = (cv::Mat_<float>(1, 3) << 1, 2, 3);
cv::Mat f = (cv::Mat_<float>(1, 3) << 4, 5, 6);
cv::Mat result;
cv::filter2D(A, result, -1, f, cv::Point(-1, -1), 0, cv::BORDER_REPLICATE);

这给了我:

result = [21 32 41]

如何获得与 Matlab 相同的结果?我怀疑 OpenCV 中的 anchor 会导致这种差异,但我不知道如何更改它。提前致谢。

最佳答案

使用 cv::BORDER_CONSTANT,用零填充数组而不是复制相邻元素:

cv::filter2D(A, result, -1, f, cv::Point(-1, -1), 0, cv::BORDER_CONSTANT);

结果是:

result = [17, 32, 23]

关于c++ - Matlab的filter2在OpenCV中的等效函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29212944/

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