2016-02-05 3 views
0


ArUco - exception non gérée

J'ai mis en place la bibliothèque ArUco et que vous voulez maintenant d'écrire un petit code pour tester si elle fonctionne correctement. Le code est comme ci-dessous:

#include<opencv2/opencv.hpp> 
#include<iostream> 
#include<aruco.h> 
#include<cvdrawingutils.h> 

using namespace cv; 
using namespace std; 
using namespace aruco; 

int main() 
{ 
    Mat image; 
    //Read image and display it 
    image = imread("E:/../Capture.PNG", 1); 
    if (image.empty()) //check whether the image is loaded or not 
    { 
     cout << "Error : Image cannot be loaded..!!" << endl; 
     //system("pause"); //wait for a key press 
     return -1; 
    } 
    namedWindow("Image", CV_WINDOW_AUTOSIZE); 
    imshow("Image", image); 
    waitKey(1000); 

    //Marker detection 
    MarkerDetector MDetector; 
    vector<Marker> Markers; 

    //I am not sure if we need to read the pattern of the marker. So I read it. 
    Markers = imread("E:/.../pattern.PNG", 1); 
    MDetector.detect(image, Markers); 

    //draw infor and its boundaries 
    for (int i = 0; i < Markers.size(); i++) 
    { 
     Markers[i].draw(image, Scalar(0, 0, 255), 2); 
    } 
    imshow("ouput", image); 
    waitKey(0); 
} 


Ce code construit avec zéro erreur, mais quand je le lance, il me donne l'erreur.
L'erreur est:
enter image description here
Ceci est ce que je reçois quand je frappe break.
enter image description here
j'utiliser Windows 8.1, Microsoft Visual Studio 2013, OpenCV 3.0 et 1.3.0 ArUco
Toute aide serait utile. Merci beaucoup pour votre aide.

+1

Cela peut sembler évident, mais pourquoi n'avez-vous pas simplement frappé * "Break" *, et jeter un coup d'oeil à la pile d'appel vous-même? – IInspectable

+0

@IInspectable Je ne comprends pas ce qu'est l'erreur, c'est la raison pour laquelle je l'ai posté ici. J'ai édité la question et ajouté ce que je reçois pendant que l'on clique sur break. J'espère que vous pouvez indiquer où est mon erreur. Je vous remercie. – SNB

+0

Vous devez obtenir des symboles de débogage pour opencv, et tout ce qui est vers le haut de la callstack. Voir [Débogage avec des symboles] (https://msdn.microsoft.com/fr-fr/library/windows/desktop/ee416588.aspx) pour obtenir des instructions sur la configuration de votre environnement de développement pour utiliser les symboles de débogage. – IInspectable

Répondre

0

Cette question est résolue. J'utilisais un mauvais motif de marqueur. nous sommes supposés utiliser le modèle de marqueur fourni par ArUco. Vous pouvez les générer ici: http://terpconnect.umd.edu/~jwelsh12/enes100/markergen.html
Il y avait des erreurs dans le code aussi. Le code est ci-dessous:

#include<opencv2/opencv.hpp> 
#include<iostream> 
#include<aruco.h> 
#include<cvdrawingutils.h> 

using namespace cv; 
using namespace std; 
using namespace aruco; 

int main() 
{ 
    Mat image; 
    //Read image and display it 
    image = imread("E:/Studies/Master Thesis/Markers/arucoTest.PNG", 1); 
    if (image.empty()) //check whether the image is loaded or not 
    { 
     cout << "Error : Image cannot be loaded..!!" << endl; 
     //system("pause"); //wait for a key press 
     return -1; 
    } 
    namedWindow("Image", CV_WINDOW_AUTOSIZE); 
    imshow("Image", image); 
    waitKey(1000); 

    //Marker detection 
    MarkerDetector MDetector; 
    vector<Marker> Markers; 
    MDetector.detect(image, Markers); 

    //draw information and its boundaries 
    for (unsigned int i = 0; i<Markers.size(); i++) { 
     cout << Markers[i] << endl; 
     Markers[i].draw(image, Scalar(0, 0, 255), 2); 
    } 
    imshow("ouput", image); 
    waitKey(0); 
} 


J'espère que ce code de test aide les débutants à ArUco (autres comme moi).