2016-02-05 212 views
0


ArUco - 未處理的異常

我已經建立了ArUco庫,現在想寫一個小的代碼來測試它是否工作正常。代碼如下:

#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); 
} 


此代碼編譯零誤差,但是當我運行它,它給我的錯誤。
錯誤是:
enter image description here
這就是我在休息時得到的結果。
enter image description here
我使用Windows 8.1,Microsoft Visual Studio 2013,opencv 3.0和ArUco 1.3.0
任何幫助都會有所幫助。非常感謝您的幫助。

+1

這聽起來很明顯,但你爲什麼不直接點擊*「Break」*,然後自己查看一下callstack? – IInspectable

+0

@IInspectable我不明白錯誤是什麼,這就是我在這裏發佈它的原因。我已經編輯了這個問題,並添加了我點擊中斷時獲得的內容。我希望你能指出我的錯誤在哪裏。謝謝。 – SNB

+0

您需要獲得opencv的調試符號,以及其他任何指向調用堆棧頂部的符號。有關設置開發環境以使用調試符號的說明,請參見[使用符號調試](https://msdn.microsoft.com/en-us/library/windows/desktop/ee416588.aspx)。 – IInspectable

回答

0

這個問題已解決。我正在使用錯誤的標記模式。我們應該使用ArUco提供的標記模式。你可以在這裏找到它們:http://terpconnect.umd.edu/~jwelsh12/enes100/markergen.html
代碼中也有錯誤。正確的代碼如下:

#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); 
} 


我希望這個測試代碼可以幫助新手到ArUco(別人像我一樣)。