1

在 Windows 7 64 位 AMD 处理器上,我安装了 OpenCV 2.4.5,带有 eclipse CDT Juno 和 MinGW,一切都是最新的更新。以前eclipse CDT 和MinGW 编译100+ 源文件都没有问题。他们甚至编译了这个小的 OpenCV 源文件,

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;

int main()
{
    IplImage* img1 = cvLoadImage("lenna.png");
    cvShowImage("MyWindow1", img1);

    cv::Mat img2;
    img2 = cv::imread("lenna.png", CV_LOAD_IMAGE_COLOR);

    cv::namedWindow("MyWindow2", CV_WINDOW_AUTOSIZE);
    cv::imshow("MyWindow2", img2);

    cvWaitKey(0);
    return 0;
}

但是当我尝试运行它时,它会因臭名昭著而崩溃

“应用程序无法正确启动(0xc0000005)。单击确定关闭应用程序。”

什么可能是错的,这个问题的解决方案是什么?

  1. OpenCV(预编译)解压缩到“C:\OpenCV245PC\(README、index.rst 和 CMakeLists.txt 包含所有子文件夹)
  2. Windows 系统 PATH 设置为 C:\OpenCV245PC\build\x86\mingw\bin
  3. Eclipse GCC C++ 编译器,包含路径 (-I) 设置为“C:\OpenCV245PC\build\include”
  4. Eclipse MinGW C++ Linker,库搜索路径(-L)设置为:“C:\OpenCV245PC\build\x86\mingw\lib”
  5. Eclipse MinGW C++ 链接器、库 (-l) 设置为:

opencv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv_nonfree245 opencv_objdetect245 opencv_photo245 opencv_stitching245 opencv245video245 opencv_video

4

2 回答 2

6

经过多次试验和错误后,我决定遵循教程并编译我自己的二进制文件,因为似乎有太多人抱怨预编译的二进制文件不适合他们。Eclipse CDT Juno 已经安装。

我的程序如下:

  1. 下载并安装 MinGW 并使用 c:/mingw/bin 添加到系统 PATH
  2. 从http://www.cmake.org下载 cmake并安装
  3. 下载OpenCV2.4.5 Windows版
  4. 将 Opencv 安装/解压缩到 C:\OpenCV245PC\(README、index.rst 和 CMakeLists.txt 包含所有子文件夹)
  5. 运行 CMake GUI 工具,然后
  6. 选择 C:\OpenCV245PC\ 作为源
  7. 选择目标,C:\OpenCV245MinGW\x86 构建二进制文件的位置
  8. 按配置按钮,选择 MinGW Makefiles 作为生成器。窗口中有一些红色高亮显示,根据需要选择选项。
  9. 再次按下配置按钮。配置现已完成。
  10. 按生成按钮。
  11. 生成完成后退出程序。
  12. 退出 Cmake 程序。
  13. 运行命令行模式(cmd.exe),进入目标目录C:\OpenCV245MinGW\x86
  14. 键入“mingw32-make”。您将看到构建二进制文件的进展。如果找不到该命令,则必须确保在系统 PATH 中添加了 c:/mingw/bin。构建继续根据选择的选项完成。
  15. 在 Windows 系统 PATH(我的电脑 > 右键单击​​ > 属性 > 高级 > 环境变量 > 路径)中添加目标的 bin 目录,C:\OpenCV245MinGW\x86\bin
  16. 重启电脑
  17. 转到 Eclipse CDT IDE,使用示例 OpenCV 代码创建一个 C++ 程序(您可以使用本主题顶部的代码)。
  18. 转到 Project > Properties > C/C++ Build > Settings > GCC C++ Compiler > Includes,然后添加源 OpenCV 文件夹“C:\OpenCV245PC\build\include”
  19. 转到项目 > 属性 > C/C++ 构建 > 设置 > MinGW C++ 链接器 > 库,然后逐个添加到库 (-l)(这可能因项目而异,您可以根据需要添加所有这些或其中一些只是您项目所需的): op​​encv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv_nonfree245 opencv_objdetect245 opencv_video4opencv_video245opencv_stitch2
  20. 将构建的 OpenCV 库文件夹 "C:\OpenCV245MinGW\x86\lib" 添加到库搜索路径 (-L)

您可以使用此代码来测试您的设置:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{

Mat img = imread("c:/lenna.png", CV_LOAD_IMAGE_COLOR);

namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
imshow("MyWindow", img);

waitKey(0);
return 0;
}

不要忘记将图像放到 C:/ (或者任何你认为合适的地方,只要确保 eclipse 有读取权限。

于 2013-07-01T10:36:03.913 回答
1

你可以试试这个代码,

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{

Mat img = imread("lenna.png", CV_LOAD_IMAGE_COLOR);

namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
imshow("MyWindow", img);

waitKey(0);
return 0;
}

因为您似乎没有为 img1 创建一个窗口,也没有将 imread 输出分配给 img2。

于 2013-07-01T08:59:53.297 回答