为Visual Studio 2010安装OpenCV-2.3

我试图用Visual Studio 2010 Express使用opencv 2.3。 我的代码是从例子:

#include "stdafx.h" #include <highgui.h> int _tmain(int argc, _TCHAR* argv[]) { int c; // allocate memory for an image IplImage *img; // capture from video device #1 CvCapture* capture = cvCaptureFromCAM(1); // create a window to display the images cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE); // position the window cvMoveWindow("mainWin", 5, 5); while(1) { // retrieve the captured frame img=cvQueryFrame(capture); // show the image in the window cvShowImage("mainWin", img ); // wait 10 ms for a key to be pressed c=cvWaitKey(10); // escape key terminates program if(c == 27) break; } return 0; } 

到目前为止,我做了什么?

  • build\binbuild\{x86|x64}\{vc9\vc10\mingw}\bin到我的系统path(使用DLL)。
  • 作为库目录添加了build\{x86|x64}\{vc9\vc10\mingw}\libbuild\{x86|x64}\{vc9\vc10\mingw}\staticlib为我的链接器设置。
  • 添加生成build\include和生成build\include\opencv作为包含目录到我的编译器设置。

结果是:

1> LINK:致命错误LNK1104:无法打开文件'c:\ OpenCV2.3 \ build \ x86 \ vc10 \ lib.obj'

OpenCV文件夹中没有lib.obj 。 我只卸载了OpenCV-2.3.0-win-superpack.exe ,而不使用CMake软件。

我究竟做错了什么?

那么官方的指南是在VS2010上安装OpenCV 2.1 ,所以我在下面写了一些说明,说明如何在Visual Studio 2010 (Express)上正确地安装和configurationx86版本的OpenCV 2.3 ,因为很多人似乎都有问题正确设置它。

下载OpenCV-2.3.0-win-superpack.exe并执行它以提取所有文件到名为OpenCV2.3的文件夹。 在这个文件夹里面有两个目录: buildopencv 。 VS2010上的所有设置都将参考build目录。 为了实际的目的,我将文件夹OpenCV2.3移到了我的C:\驱动器中,所以请注意我在本指南中build议的path,因为您的path可能会有所不同。

在Visual Studio上,创build一个新的Win32控制台应用程序项目并将其命名为任何您喜欢的项目。 之后,会出现一个新的窗口。 单击应用程序设置选项卡,并确保select空项目选项:

在这里输入图像描述

将新文件main.cpp添加到文件夹Source Files ,然后将此代码添加到main.cpp

 #include <stdio.h> #include <cv.h> #include <highgui.h> int main(int argc, char* argv[]) { if (argc < 2) { printf("Usage: ./opencv_hello <file.png>\n"); return -1; } IplImage* img = cvLoadImage(argv[1], CV_LOAD_IMAGE_UNCHANGED); if (!img) { return -1; } cvNamedWindow("display", CV_WINDOW_AUTOSIZE); cvShowImage("display", img ); cvWaitKey(0); return 0; } 

在这一点上,我们需要configuration项目,以便它可以findOpenCV标题和库。 转到项目属性( ALT + F7 ),一旦出现新窗口,请执行以下操作:

  • configuration框中,select所有configuration

  • 打开configuration属性> C / C ++>常规 ,然后编辑Additional Include Directories字段以添加这3个path(对于标题):

    C:\OpenCV2.3\build\include\opencv

    C:\OpenCV2.3\build\include\opencv2

    C:\OpenCV2.3\build\include

在这里输入图像描述

请注意, include\opencv用于OpenCV的C接口,如果是C ++接口,则include\opencv2 。 我们还添加了文件夹include以防止我们的构build被C接口的某些头文件引用C ++头文件opencv2\coreopencv2\core

  • 然后,在configuration属性>链接器>常规中添加库的path,并在其他库目录字段中添加: C:\OpenCV2.3\build\x86\vc9\lib

在这里输入图像描述

  • 最后,对于这个简单的testing,我们将添加库opencv_core230.libopencv_highgui230.lib 。 所以去configuration属性>链接器>input并添加它们:

在这里输入图像描述

当编写更复杂的应用程序时,您可能需要添加其他OpenCV库,我没有在我们这个小项目中提到过。

F7 build立解决scheme ,你应该看到:

 ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== 

为了能够执行应用程序,您需要修改系统的PATH环境variables以添加OpenCV DLL的位置。 将其添加到PATH的末尾:

 ; C:\OpenCV2.3\build\x86\vc9\bin 

如果您正在努力编辑PATH环境variables,您也可以将所需的.dll文件复制到您的项目文件夹中: dll文件位于此文件夹中../OpenCV2.3/build.x86/vc9/bin

然后将它们复制到创build.exe文件的文件夹中: c:\ Users \ PIMMES \ Documents \ Visual Studio 2010 \ Projects \ eigenfaces \ Debug (当然,您必须将path更改为Debug文件夹)

您只需要复制您在项目中使用的.dll文件(例如#include)。例如,如果您收到一条错误消息,说明找不到opencv_core231d.dll,则从上述位置获取此.dll文件(bin文件夹)并复制到您的项目debugging文件夹。

希望这可以帮助..

每当我做一个使用opencv 2.2或更高版本的程序时,我都会包含所有内容,然后注释掉我不需要的库。 试试这个,我相信你需要比highgui.h更多的东西

 #include "opencv2\opencv.hpp" using namespace cv; //#pragma comment(lib, "opencv/opencv_calib3d231.lib") //#pragma comment(lib, "opencv/opencv_contrib231.lib") #pragma comment(lib, "opencv/opencv_core231.lib") //#pragma comment(lib, "opencv/opencv_features2d231.lib") //#pragma comment(lib, "opencv/opencv_flann231.lib") //#pragma comment(lib, "opencv/opencv_gpu231.lib") //#pragma comment(lib, "opencv/opencv_haartraining_engine.lib") #pragma comment(lib, "opencv/opencv_highgui231.lib") //#pragma comment(lib, "opencv/opencv_imgproc231.lib") //#pragma comment(lib, "opencv/opencv_legacy231.lib") //#pragma comment(lib, "opencv/opencv_ml231.lib") #pragma comment(lib, "opencv/opencv_objdetect231.lib") //#pragma comment(lib, "opencv/opencv_ts231.lib") //#pragma comment(lib, "opencv/opencv_video231.lib")