ich den folgenden Code bin mit Übereinstimmungen zwischen den Bildern zu finden:Wie zeichne erkanntes Objekt mit SIFT-Funktionen auf OpenCV 3.1?
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/xfeatures2d/nonfree.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <vector>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
//cv::initModule_nonfree();
//initModule_features2d();
Mat img_1 = imread("C:/Users/Dan/Desktop/0.jpg", 1);
Mat img_2 = imread("C:/Users/Dan/Desktop/0.jpg", 1);
cv::Ptr<Feature2D> f2d = xfeatures2d::SIFT::create();
//-- Step 1: Detect the keypoints:
std::vector<KeyPoint> keypoints_1, keypoints_2;
f2d->detect(img_1, keypoints_1);
f2d->detect(img_2, keypoints_2);
//-- Step 2: Calculate descriptors (feature vectors)
Mat descriptors_1, descriptors_2;
f2d->compute(img_1, keypoints_1, descriptors_1);
f2d->compute(img_2, keypoints_2, descriptors_2);
Mat out0;
drawKeypoints(img_1, keypoints_1, out0);
imshow("KeyPoint0.jpg", out0);
//-- Step 3: Matching descriptor vectors using BFMatcher :
BFMatcher matcher;
std::vector<DMatch> matches;
matcher.match(descriptors_1, descriptors_2, matches);
Mat img_matches = Mat::zeros(img_1.size(), CV_8UC3);
drawMatches(img_1,keypoints_1,img_2,keypoints_2,matches,img_matches);
imshow("matches", img_matches);
waitKey(0); // Keep window there until user presses 'q' to quit.
return 0;
}
Seit OpenCV 3.1 Funktionen geändert wurden, war ich für einen Beispiel-Code suchen, die SURF oder SIFT in meinem Fall ist, aber ich konnte es nicht finde irgendein.
Können Sie mir helfen und den Abschluss des Codes buchen, so dass es die Konturen um die erkannten Objekte wie in the code of the other version of OpenCV zeichnen wird.
Danke, Dan.
http://docs.opencv.org/trunk/d7/dff/ tutorial_feature_homog raphy.html # gsc.tab = 0 – Miki