簡體   English   中英

Matlab的filter2在OpenCV中的等效功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM