2017-09-13 5 views
0

Merci de bien vouloir me faire part de mon expérience de l'openCV et de la vision par ordinateur. J'essaie d'obtenir les points de caractéristique de match de deux images, pour le traitement ultérieur. J'ai écrit le code suivant en référençant un example d'une correspondance de fonction SURF par FLANN, mais dans ORB.Fonction ORB correspondant à FLANN en C++

est ici le code:

#include "opencv2/video/tracking.hpp" 
#include "opencv2/imgproc.hpp" 
#include "opencv2/videoio.hpp" 
#include "opencv2/highgui.hpp" 
#include "opencv2/features2D.hpp" 


using namespace cv; 
using namespace std; 



int main(int argc, char** argv) 
{ 
Mat im_left, im_right; 
Mat descriptor_1, descriptor_2; 

vector<KeyPoint> keypoints_1, keypoints_2; 

im_left = imread("im_left.png", IMREAD_GRAYSCALE); 
im_left = imread("im_right.png", IMREAD_GRAYSCALE); 

Ptr<ORB> detector = ORB::create(); 
vector<DMatch> matches; 
FlannBasedMatcher matcher; 
Ptr<DescriptorExtractor> extractor; 


detector->detect(im_right, keypoints_1, descriptor_1); 
detector->detect(im_left, keypoints_2, descriptor_2); 

matcher.match(descriptor_1, descriptor_2, matches); 

Mat img_match; 

drawMatches(im_left, keypoints_1, im_right, keypoints_2, matches, img_match); 
imshow("Matches", img_match); 



waitKey(10000); 
return 0; 
} 

Mais cela jette une erreur d'exception en disant:

exception non gérée à 0x00007FF97D3B9E08 dans Project1.exe: Microsoft C++ exception: cv :: Exception à l'emplacement de mémoire 0x0000009E5D4FE3B0. s'est produite

Peut être mon code est plein de non-sens, apprécier si quelqu'un peut m'aider à résoudre ce problème.

En vous remerciant d'avance!

+0

'using namespace std;' est une mauvaise habitude d'entrer dans et si vous pouvez vous arrêter maintenant, vous pourriez éviter beaucoup de maux de tête à l'avenir. Le préfixe 'std ::' est là pour une raison: il évite les conflits avec vos propres classes, structures et variables. – tadman

+1

[ici] (https://github.com/ahmetozlu/open_source_markerless_augmented_reality/wiki/Markerless-Augmented-Reality-Tutorial) est le tutoriel pour projet de réalité augmentée sans marqueur (programmé en C++). Ce projet a une partie correspondant à l'avenir et plus de choses sur la correspondance d'images, cela peut être utile pour vous. [This] (https://www.youtube.com/watch?v=nPfR5ACrqu0) est la vidéo de démonstration du projet. – Ozlu

+0

Merci Olzu, va vérifier ça :) Merci beaucoup encore! – Althaf

Répondre