在C ++中将Conv2 Matlab转换为filter2d opencv

时间:2018-10-13 10:30:18

标签: c++ matlab opencv convolution

我在matlab中转换conv2函数获得的结果与我使用filter2d函数在opencv中获得的结果非常不同。

在opencv中的(0,0)位置获得1.1175871e-08,而在matlab中获得的结果为-0.9639

这是opencv和c ++中的代码:

cv::Mat dst; 
cv::Mat kernel;

float K[5] = {-0.014, -0.45, 0, 0.4, 0.01};
cv::Mat kernel(1, 5, CV_32F, K);

float test[3][4] = {{1, 2, 3, 4},{1, 2, 3, 4},{1, 2, 3, 4}}; 
cv::Mat myMat(3, 4, CV_32FC1, &test);

filter2D(myMat, dst, -1 , kernel , Point( -1, -1 ), 0, BORDER_DEFAULT);

cout << dst << endl;

这是matlab中的代码:

A = [1,2,3,4; 1,2,3,4; 1,2,3,4]; 
k = [-0.014, -0.45, 0, 0.4, 0.01];
conv2(A, k, 'same');

我在转换中做错什么了?

谢谢。

0 个答案:

没有答案