Ich versuche euklidische Norm im Quadrat verwenden cv::NORM_L2SQR
ohne Verwurzelung, wie hier gezeigtOpenCV squared Norm für cv :: Point2D
Does OpenCV offer a squared norm function for cv::Point?
Rechenressourcen zu sparen. Während also der folgende Code funktioniert:
// 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);
Die folgende nicht:
double res = cv::norm(a-b,cv::NORM_L2SQR);
(error: no matching function for call to norm(cv::Point_<double>, cv::NormTypes)
)
Was kann ich in OpenCV 3.1 optimierte Lösung zu verwenden?
EDIT: Ich verwende benutzerdefinierte Funktion zur Zeit und hoffen, dass Compiler optimiert es irgendwie:
double euclideanDist(cv::Point2d& p, cv::Point2d& q) {
cv::Point2d diff = p - q;
return (diff.x*diff.x + diff.y*diff.y);
}
Es scheint, dass nur Point2f akzeptiert werden (Point_). Ich sollte überprüfen, obwohl –
Miki
@Miki Nope, bekomme ich "' keine passende Funktion "" sogar für Point2f – Slowpoke
Ich denke, Sie übertreiben es, Es scheint keine große Leistungsverbesserungen, etc. zu mir für die Verwendung von OpenCV-Implementierung anstelle von einem einfachen C++ Inline-Definition einer einfachen EqDist-Methode, Sie können die Kommentare lesen: http://answers.opencv.org/question/14188/calc-eucliadian-distance-between-two-single-point/?answer=14190#post-id -14190, um meine Annahmen zu überprüfen – ZdaR