我无法在Windows下启动OpenCV应用程序。
给定以下简单的OpenCV程序:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include "cv.h"
#include "highgui.h"
char imagename[100] = "sudoku.jpg";
IplImage* img;
int main(int argc, char** argv) {
cvInitSystem(argc, argv);
cvNamedWindow("Example4", CV_WINDOW_AUTOSIZE);
IplImage* img = cvLoadImage(imagename);
cvShowImage("Example4", img);
cvWaitKey(0);
cvDestroyWindow("Example4");
return (0);
}
我可以编译并开始使用预编译的OpenCV库版本2.2,引用的图像显示在窗口中。(编译确实使用了netbeans和cygwin或自己的makefile,其中包含5行和minGW)。然后我想在OpenCV中使用C++函数调用,但编译不起作用,所以基于这个答案,我决定按照这个安装指南和这个入门指南重新编译OpenCV。
使用minGW和CMake编写了OpenCV,没有任何抱怨。我没有使用任何可选的opencv编译包。
不幸的是,没有程序可以启动,因为当应用程序崩溃时,只有一个灰色窗口出现,并且Windows给出以下错误消息:
Problem signature:
Problem Event Name: APPCRASH
Application Name: main.exe
Application Version: 0.0.0.0
Application Timestamp: 4de3a2d9
Fault Module Name: libopencv_highgui220.dll
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 4dcd07e6
Exception Code: c0000005
Exception Offset: 0002def4
OS Version: 6.1.7600.2.0.0.256.4
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
可能是什么问题?
我试着从Netbeans编译,用我自己的Makefile和Cmake gui,高管们都很顺利地创建了。我在PATH中包含了opencv-bin-dir,以使提到的libopencv_higigui220.dll可见。
更新:
按照前面的过程,我在WindowsXPProfessional上得到了完全相同的结果:opencv和项目构建还可以,但运行挂起。这台机器上没有其他C、C++、编译器和IDE可能会干扰我的opencv编译。
我在opencv论坛上发布了同样的问题,我得到了答案。
问题是我使用了lib或bin opencv目录进行链接和PATH。使用安装指南,我发现我必须使用lib目录作为链接,使用bin目录作为PATH。库中dll.a和bin中dll的组合使用对我来说是新的。
因此,我遵循CodeBlocks+MinGW指南一步一步地解决了这个问题,此外当我使用我以前在没有CodeBlocks的情况下构建的MinGW opencv时,C或C++代码都会正确运行。
我已经找到了在Windows中安装OpenCV并在大多数IDE中使用它的详细描述:http://techarenagadgetz.in/2012/12/configuring-opencv-2-4-2-for-codeblocks-and-similar-ides/