2016-12-14 5 views
0

Ich lese viele Beiträge, aber ich kann immer noch keine Lösung für mein Problem finden. Die verlinkten Bibliotheken sind korrekt und der Code funktioniert gut mit vielen anderen openCV-Funktionen, aber nicht mit findContours. Ich werde meinen Code schreiben:Heap Fehler bei der Verwendung von findContours openCV

int check_broken(Mat src, Mat check){ 
vector<Mat> contours; 
vector<Vec4i> hierarchy; 
Mat check_gray,check_g; 
cvtColor(src,check_gray,CV_BGR2GRAY); 
threshold(check_gray,check_g,100,255,THRESH_BINARY); 
namedWindow("ventana",CV_WINDOW_AUTOSIZE); 
imshow("ventana",check_gray); 
waitKey(0); 

Mat dst(check.rows,check.cols,CV_8UC1,Scalar::all(0)); 
int count = 0; 

findContours(check_g, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); 


for (int i = 0; i < contours.size() ; i = hierarchy[i][0]){ 
    Rect r = boundingRect(contours[i]); 
    if(hierarchy[i][2]<0){ 
     rectangle(check,Point(r.x,r.y), Point(r.x+r.width,r.y+r.height),Scalar(0,0,255),3,8,0); 
     count++; 
    } 
} 
namedWindow("ventana",CV_WINDOW_AUTOSIZE); 
imshow("ventana",dst); 
waitKey(0); 
destroyWindow("ventana"); 
return 0; 
} 

Ich bin in Release-Modus kompiliert und alle Bibliotheken sind von der gleichen Version 2413 und ich arbeite mit VS10. Ich frage mich, wie ich mit diesem Problem umgehen soll. Danke für die Hilfe!

+2

Ihre verknüpften Bibliotheken sind * *Nicht richtig. Achten Sie darauf, keine Debug-Bibliotheken im Freigabemodus oder umgekehrt zu verwenden. Und verwenden Sie die gleiche Architektur (x86 vs x64) als Ihr Projekt. Und achten Sie darauf, dass die OpenCV Libs mit VC10 kompiliert werden – Miki

+0

opencv_calib3d2413.lib opencv_contrib2413.lib opencv_core2413.lib opencv_features2d2413.lib opencv_flann2413.lib opencv_gpu2413.lib opencv_highgui2413.lib opencv_imgproc2413.lib opencv_legacy2413.lib opencv_ml2413. lib opencv_nonfree2413.lib opencv_objdetect2413.lib opencv_photo2413.lib opencv_stitching2413.lib opencv_superres2413.lib opencv_ts2413.lib opencv_video2413.lib opencv_videostab2413.lib Dies sind die Bibliotheken, die für den Release-Modus verlinkt sind, ich bin sicher, dass sie korrekt sind. –

+1

Dies sind Release-Bibliotheken. Stellen Sie sicher, dass Sie Ihren Code in der Version ausführen. Bitte zeigen Sie auch den Pfad, wo diese Bibliotheken sind – Miki

Antwort

2

Ich bin mit VS10 Arbeits

Hier ist der Pfad: C: \ opencv \ bauen \ x86 \ VC11 \ bin

Sie sind an die falschen Bibliotheken verknüpfen.

Sie verwenden OpenCV kompiliert mit vc11 (z. B. Visual Studio 2012), aber Sie verwenden Visual Studio 2010. So wird es nicht funktionieren. Sie können entweder:

  1. Verwendung von Visual Studio 2012 oder
  2. mit vc10 zusammengestellt Verwendung OpenCV (wenn Sie nicht vorkompilierte Binaries finden, müssen Sie OpenCV neu kompilieren)
Verwandte Themen