Ähnlich wie Post und this Post, ich möchte erkannte Schlüsselpunkte in elliptische Schlüsselpunkte konvertieren, indem Sie this Sample SURF Erkennung und passenden Code aus OpenCV-Bibliothek.Wie benutzt man eine Funktion von opencv?
Allerdings habe ich wenig Ahnung von C++ Syntax und bin nur mit Matlab vertraut. Vorherige Beiträge scheinen mit dem folgenden Code aus evaluation.cpp von opencv Bibliothek zu zeigen, sie zu konvertieren:
void EllipticKeyPoint::convert(const std::vector<KeyPoint>& src, std::vector<EllipticKeyPoint>& dst)
{
if(!src.empty())
{
dst.resize(src.size());
for(size_t i = 0; i < src.size(); i++)
{
float rad = src[i].size/2;
CV_Assert(rad);
float fac = 1.f/(rad*rad);
dst[i] = EllipticKeyPoint(src[i].pt, Scalar(fac, 0, fac));
}
}
}
Die Eigenpunkte scheinen nach Linie 202 von Beispielcode generiert werden. Also versuchte ich folgendes zu ihnen elliptischen keypoints zu konvertieren durch Zugabe:
cv::EllipticKeyPoint::convert(keypoints1, keypoints1);
nach Linie 202 undusing namespace cv::xfeatures2d::EllipticKeyPoint
am Anfang des Codes
aber beide zeigten Fehler zu sagen:
name followed by '::' must be a class or namespace name
undnamespace "cv::xfeatures2d" has no member "EllipticKeyPoint"
respecti vely
Welche Klasse/Namespace/Mitglied sollte ich verwenden? Wie schreibe ich den Code richtig, damit ich diese Funktion verwenden kann, um Schlüsselpunkte in elliptische Schlüsselpunkte zu konvertieren?
Der genaue Code ist der Beispiel-SURF-Code (3. Link aus dem Post). Ich hoffte, 1 oder 2 Zeilen hinzuzufügen, indem ich den frei verfügbaren Code in der opencv-Bibliothek verwendete. Ich habe versucht, Ihre 1 Codezeile zu dem Beispielcode hinzuzufügen, aber es hat nicht funktioniert. Mit diesem: 'cv :: evaluateFeatureDetector (img1.getMat (ACCESS_READ), img2.getMat (ACCESS_READ), H,);' scheint zu arbeiten, aber ich verstehe nicht, was das 3. Argument und so weiter will. Es sieht für mich sehr verwirrend aus mit den verschiedenen Arten von Symbolen. Kannst du erklären, was es bedeutet? – SK90
Ich meine Symbole wie "<>, &, * und ::" und wie sie zusammenpassen sind verwirrend für mich, da ich C++ nicht kenne – SK90
@ SK90 - Antwort verbessert zu erklären (hoffe) ho zu verwenden ' convert() '; über die Verwendung von "<>, &, * und ::", naja ... Sie können versuchen, nach einem einzelnen Beispiel zu fragen, aber es ist sehr schwierig, eine allgemeine Antwort zu geben; C++ ist eine komplexe Sprache und ich schlage vor, es mit einem guten Buch oder einem sehr guten Tutorial zu studieren – max66