2013-11-29 4 views
0

код в нижней части дает результат:Windows, вызвало точку останова OpenCV VS2010

result http://oi42.tinypic.com/vhukj6.jpg

Когда клавиша нажата, то появляется сообщение об ошибке:

error http://oi39.tinypic.com/2n1gkkm.jpg

Как могу я исправить это? Протестировано на VS2010 Win8 и WinXp с использованием MFC в качестве статической библиотеки.
EDIT1: в обоих случаях целевой платформой является Win32
EDIT2: проблема исчезает на Win8, когда использование MFC переключается на «использование стандартных оконных библиотек». В WinXp он дает нарушение доступа и указывает на free.c: retval = HeapFree (_crtheap, 0, pBlock);
EDIT3: OpenCV 2.4.7 используется

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 

using namespace cv; 

int mindistance = 50; // minimum distance between 2 circle centres  
int hi = 255, lo = 20; //the maximum and minimum radius of the circles 


int main(int argc, char* argv[]) { 

Mat orig = imread(argv[1]); 
Mat display = orig.clone(); 
Mat snooker, edges; 
cvtColor(orig, snooker, CV_RGB2GRAY); 
Canny(snooker, edges, 20, 50, 3); 
vector<Vec3f> circles; 

HoughCircles(edges, circles, CV_HOUGH_GRADIENT, 1, mindistance, hi, lo); 

for(size_t i = 0; i < circles.size(); i++) 
{ 

    Point center(cvRound(circles[i][0]), cvRound(circles[i][1])); 
    int radius = cvRound(circles[i][2]); 
    if (radius < (min(snooker.rows, snooker.cols)/10)) 
     continue; 

    // draw the green circle center 
    circle(display, center, 3, Scalar(0,255,0), -1, 8, 0); 

    // draw the blue circle outline 
    circle(display, center, radius, Scalar(255,0,0), 3, 8, 0); 

} 

imshow("circles", display); 
imshow("snooker", snooker); 
imshow("edges", edges); 
waitKey(); 

return 0; 

} 
+0

этот конкретный хост изображения не должен быть разрешен на SO. –

ответ

0

похож на OpenCV Unresolved External Symbols - Other Libraries Needed?

, поскольку вы используете MFC в качестве статической библиотеки, вы должны добавить .lib в/staticlib вместо/Lib

например "OpenCV \ сборка \ x86 \ VC10 \ staticlib"

и добавить следующие дополнительные .lib

(in /staticlib but not in /lib,example for debug version as 'd' before '.lib') 
libpngd.lib 
libtiffd.lib 
zlibd.lib 
IlmImfd.lib 
libjasperd.lib 
libjpegd.lib 

(part of mfc i thought) 
comctl32.lib 
gdi32.lib 
vfw32.lib 

https://stackoverflow.com/a/21946953/3800477

Смежные вопросы