我需要将以下matlab代码转换为OpenCV并获得完全相同的结果.
在matlab中:
A = [1 2 3];
f = [4 5 6];
result = filter2(f, A);
Run Code Online (Sandbox Code Playgroud)
这给出了:
result = [17 32 23]
Run Code Online (Sandbox Code Playgroud)
在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);
Run Code Online (Sandbox Code Playgroud)
这给了我:
result = [21 32 41]
Run Code Online (Sandbox Code Playgroud)
如何获得与Matlab相同的结果?我怀疑OpenCV中的锚点导致了这种差异,但我无法弄清楚如何改变它.提前致谢.
使用cv::BORDER_CONSTANT,将数组填充为零而不是复制相邻元素:
cv::filter2D(A, result, -1, f, cv::Point(-1, -1), 0, cv::BORDER_CONSTANT);
Run Code Online (Sandbox Code Playgroud)
结果是:
result = [17, 32, 23]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |