Opencv 3.2 C++. Ich erstelle eine Methode, die einen beliebigen Satz von Schlüsselpunktdeskriptoren verwenden kann und einen der vom Benutzer angegebenen Übereinstimmungsalgorithmen verwendet. Wenn ich versuche, meinen Code zu erstellen, erhalte ich folgende Fehler.OpenCV C++ Flann IndexParams und SearchParams Fehler
- cv :: flann :: IndexParams :: ~ IndexParams(), verwiesen von:
- cv :: flann :: SearchParams :: SearchParams (int, float, bool), verwiesen von:
- cv :: flann :: KDTreeIndexParams :: KDTreeIndexParams (int), bezogen von:
- Klirren: Fehler: Linker Befehl fehlgeschlagen mit Exit-Code 1 (Verwendung -v Aufruf zu sehen)
UPDATE - Wenn ich laufen das Standard-Flann-Tutorial auf OpenCV-Website in erhabener Ausführung findet es ohne Fehler statt Oder. Dies lässt mich glauben, dass das Problem bei Xcode liegt, bin aber immer noch nicht hundertprozentig sicher.
Ich verwende xcode und bin immer noch herauszufinden, die Schnittstelle und es gibt keine spezifischen wie angegeben, um den Fehler zu verursachen. Mein Code ist wie folgt: `
std::tuple<std::vector<DMatch>,Mat> matchFeatures(std::vector<KeyPoint> kp1, Mat desc1, std::vector<KeyPoint>
kp2, Mat desc2, String keypointsMatcher){
std::vector<DMatch> matches;
vector<vector<DMatch>> knnMatches;
double max_dist = 0, min_dist = 100;
Mat homography;
if(keypointsMatcher == "bruteForce"){
BFMatcher matcher;
matcher.match(desc1, desc2, matches);
}
else if(keypointsMatcher == "flann"){
if(desc1.type()!=CV_32F) {
desc1.convertTo(desc1, CV_32F);
}
if(desc2.type()!=CV_32F) {
desc2.convertTo(desc1, CV_32F);
}
FlannBasedMatcher matcher;
matcher.match(desc1, desc2, matches);
}
//-Run Knn Flann based matcher. Will create a vector of vectors (vector<vector<DMatch>>)
else if (keypointsMatcher == "knn"){
if(desc1.type()!=CV_32F) {
desc1.convertTo(desc1, CV_32F);
}
if(desc2.type()!=CV_32F) {
desc2.convertTo(desc1, CV_32F);
}
FlannBasedMatcher matcher;
matcher.knnMatch(desc1, desc2, knnMatches, 2);
}
//-- Quick calculation of max and min distances between keypoints
for(int i = 0; i < desc1.rows; i++){
double dist = matches[i].distance;
if(dist < min_dist) min_dist = dist;
if(dist > max_dist) max_dist = dist;
}
return{matches,homography};
}`
Jede Hilfe ist willkommen!