我注意到C++中filter2D的OpenCV實現與相應內核的直接實現之間的差異。我已閱讀了以下問題:filter2D OpenCV函數C++
Opencv - how does the filter2D() method actually work?
這個問題,筆者曾試圖讓filter2D功能的工作落實。他聲稱使用規範化版本的過濾器會產生正確的結果。我測試了他的假設,發現只有當所有係數都是正數時,歸一化才能給出正確的答案。因此,使用filter2D函數可以成功實現平均濾波器[我們必須對內核進行規格化]。
但是,對於具有負係數的濾波器,例如Sobel,Laplacian和任何邊緣檢測濾波器,情況並非如此。這個問題的作者遇到了和我一樣的問題。
https://stackoverflow.com/users/2669614/bovaz
上面提到的用戶回答的鏈接的問題。他聲稱,如果內核的係數總和等於零,filter2D可能會修改它的實現。是這樣嗎?爲什麼在C +中實現filter2D會給直接實現帶來不同的結果?我已經在Python中檢查了filter2D,並且直接在C++中實現相應的內核,結果相同。