[英]Equivalent function of Matlab's filter2 in OpenCV
我需要将以下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中的锚点会导致这种差异,但是我不知道如何更改它。 提前致谢。
使用cv::BORDER_CONSTANT
,它将数组cv::BORDER_CONSTANT
为零,而不是复制相邻元素:
cv::filter2D(A, result, -1, f, cv::Point(-1, -1), 0, cv::BORDER_CONSTANT);
结果是:
result = [17, 32, 23]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.