我試着用平方歐幾里得範cv::NORM_L2SQR
沒有深入人心,如下所示爲CV OpenCV的平方範::的Point2D
Does OpenCV offer a squared norm function for cv::Point?
,以節省計算資源。因此,雖然下面的代碼工作:
// works fine
cv::Point2d a(1.5, 3);
cv::Point2d b(5.1, 6);
//Euclidean distance
//http://answers.opencv.org/question/14188
double res = cv::norm(a-b);
下列不:
double res = cv::norm(a-b,cv::NORM_L2SQR);
(error: no matching function for call to norm(cv::Point_<double>, cv::NormTypes)
)
我可以在OpenCV的3.1做些什麼來使用優化的解決方案?
編輯:我使用自定義功能的時刻,並希望編譯器優化不知何故它:
double euclideanDist(cv::Point2d& p, cv::Point2d& q) {
cv::Point2d diff = p - q;
return (diff.x*diff.x + diff.y*diff.y);
}
似乎只有Point2f被接受(Point_)。我應該仔細檢查,儘管 –
Miki
@Miki Nope,即使對於Point2f我也會得到「'無匹配函數」 – Slowpoke
我猜你已經過度使用它了,對於使用OpenCV而不是簡單的C++一個簡單的EqDist方法的內聯定義,您可以閱讀以下評論:http://answers.opencv.org/question/14188/calc-eucliadian-distance-between-two-single-point/?answer=14190#post-id -14190驗證我的假設 – ZdaR