我已经使用 OpenCV 3.0.0 有一段时间了,最近将 IDE 从 Visual Studio 2013 切换到 Qt Creator 3.4.2。我从源代码重建了我的 OpenCV 库WITH_QT
检查过。我现在在运行时遇到问题,无法释放vector<vec4i>
仅在调试模式下使用 HoughLinesP 函数时。
这是我的代码片段:
Mat source(400,400,CV_8U,Scalar(0));
line(source,Point(20,20),Point(300,300),Scalar(255),10);
{
vector<Vec4i> lines;
HoughLinesP(source, lines, 1, CV_PI/180, 50, 50, 10 );
cout << "lines.size() = " << lines.size() << endl;
cout << "before leaving block" << endl;
}
cout << "after leaving block" << endl;
imshow("source", source);
waitKey();
return 0;
如果我在发行版中运行它,那么一切都会正常,这是我的输出:
线数.size() = 13
离开街区之前
离开街区后
但是,如果我在调试中运行它,那么我的程序在到达结束块时会崩溃,这是我的输出:
线数.size() = 18446744073709306522
离开街区之前
如果在调试中并用 HoughLinesP 注释掉该行,则不会发生崩溃,这是我的输出:
线数.size() = 0
离开街区之前
离开街区后
这是我的 .pro 文件:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = OpenCVProject_x64
TEMPLATE = app
INCLUDEPATH += C:\OpenCV3.0.0\opencv\build\include
win32:CONFIG(release, debug|release) {
LIBS += -LC:\OpenCV3.0.0\opencv\OpenCVLocalBuild_x64\lib\Release \
-lopencv_calib3d300 -lopencv_core300 -lopencv_features2d300 \
-lopencv_flann300 -lopencv_hal300 -lopencv_highgui300 \
-lopencv_imgcodecs300 -lopencv_imgproc300 -lopencv_ml300 \
-lopencv_objdetect300 -lopencv_photo300 -lopencv_shape300 \
-lopencv_stitching300 -lopencv_superres300 -lopencv_ts300 \
-lopencv_video300 -lopencv_videoio300 -lopencv_videostab300
}
win32:CONFIG(debug, debug|release) {
LIBS += -LC:\OpenCV3.0.0\opencv\OpenCVLocalBuild_x64\lib\Debug \
-lopencv_calib3d300d -lopencv_core300d -lopencv_features2d300d \
-lopencv_flann300d -lopencv_hal300d -lopencv_highgui300d \
-lopencv_imgcodecs300d -lopencv_imgproc300d -lopencv_ml300d \
-lopencv_objdetect300d -lopencv_photo300d -lopencv_shape300d \
-lopencv_stitching300d -lopencv_superres300d -lopencv_ts300d \
-lopencv_video300d -lopencv_videoio300d -lopencv_videostab300d
}
SOURCES += main.cpp
如果您对导致这次崩溃的原因有任何想法,请告诉我。