我是 opencv、C++ 和 eclipse CDT 入门者。我正在按照教程学习opencv。然而,虽然我成功地编译了我的程序,但它在执行后很快就崩溃了。我通读了许多相关的问答,但没有得到有效的解决方案。任何建议都受到高度赞赏。以下是一些规格供您参考:
系统设定
- 操作系统:32位Windows 7 Professional(虚拟机)
- IDE:Eclipse Kepler 的 CDT 8.2.0
- C/C++ 编译器:mingw32-gcc (4.8.1)
- OpenCV 包:opencv2.4.6
详细程序
- 下载并解压 Eclipse
- 将 MinGW 安装到 C:\MinGW。将“C:\MinGW\bin”设置为系统路径[PATH]
- 将 OpenCV 下载并执行到 C:\opencv。将“C:\opencv\build\x86\mingw\bin”设置为系统路径[PATH]
- 启动 Eclipse 并在 Eclipse 中:
- 文件>新建>C++ 项目:项目名称->OpenCVTest,项目类型->Hello World C++ 项目,工具链->MinGW GCC
- 结束
- 在Project>Properties>C/C++ Build>Settings>Tool Settings>GCC C++ Compiler>Includes>Include paths (-I)我添加了“C:\opencv\build\include”。
- 在Project>Properties>C/C++ Build>Settings>Tool Settings>MinGW C++ Linker>Libraries>Libraries (-l)我一个接一个地添加了 opencv_core246、opencv_highgui246 和 opencv_imgproc246。
- 在Project>Properties>C/C++ Build>Settings>Tool Settings>MinGW C++ Linker>Libraries>Libraries search path (-L)我添加了“C:\opencv\build\x86\mingw\lib”。
将 OpenCVTest.cpp 文件内容替换为以下内容:
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; int main( int argc, char** argv ) { if( argc != 2) { cout <<" Usage: display_image ImageToLoadAndDisplay" << endl; return -1; } Mat image; image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file if(! image.data ) // Check for invalid input { cout << "Could not open or find the image" << std::endl ; return -1; } namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display. imshow( "Display window", image ); // Show our image inside it. waitKey(0); // Wait for a keystroke in the window return 0; }
构建项目并获得以下控制台输出(假设成功):
信息:内部生成器用于构建 g++ "-IC:\opencv\build\include" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\OpenCVTest.o" "..\src\OpenCVTest .cpp" g++ "-LC:\opencv\build\x86\mingw\lib" -o OpenCVTest.exe "src\OpenCVTest.o" -lopencv_core246 -lopencv_highgui246 -lopencv_imgproc246
在没有传递图像路径的情况下运行生成的 .exe(应该可以工作)并且程序崩溃并出现以下提示:
问题签名:问题事件名称:APPCRASH 应用程序名称:OpenCVTest.exe 应用程序版本:0.0.0.0 应用程序时间戳:5230da00 故障模块名称:libstdc++-6.dll 故障模块版本:0.0.0.0 故障模块时间戳:522c646d 异常代码:c0000005 异常偏移量:0001df4b 操作系统版本:6.1.7600.2.0.0.256.48 区域设置 ID:1033 附加信息 1:4c0d 附加信息 2:4c0d4d78887f76d971d5d00f1f20a433 附加信息 3:4c0d 附加信息 4:4c0d4d3d58087f76daf388087f76d971