为 Visual Studio 2010 设置 OpenCV-2.3
Posted
技术标签:
【中文标题】为 Visual Studio 2010 设置 OpenCV-2.3【英文标题】:Setup OpenCV-2.3 for Visual Studio 2010 【发布时间】:2011-10-24 02:02:02 【问题描述】:我正在尝试将 opencv 2.3 与 Visual Studio 2010 Express 一起使用。我的代码来自示例:
#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\bin
和build\x86|x64\vc9\vc10\mingw\bin
之一(以使用DLL)。
将build\x86|x64\vc9\vc10\mingw\lib
或build\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软件。
我做错了什么?
【问题讨论】:
【参考方案1】:好吧,official guide 是用于在 VS2010 上安装 OpenCV 2.1,所以我在下面写了一些说明,说明如何正确安装和配置 x86 版本的 Visual Studio 2010 (Express) 上的strong>OpenCV 2.3,因为很多人似乎在正确设置它时遇到问题。
下载OpenCV-2.3.0-win-superpack.exe并执行它以将所有文件提取到名为OpenCV2.3
的文件夹中。在此文件夹内有 2 个目录:build
和 opencv
。 VS2010 上的所有设置都将引用build
目录。出于实际目的,我将文件夹 OpenCV2.3
移动到了我的 C:\
驱动器,因此请注意我在本指南中建议的路径,因为您的路径可能会有所不同。
在 Visual Studio 上,创建一个新的 Win32 控制台应用程序 项目并将其命名为您喜欢的任何名称。之后,将显示一个新窗口。点击标签 Application Settings 并确保选项 Empty Project 被选中:
将新文件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;
此时,我们需要配置项目,以便它可以找到 OpenCV 头文件和库。转到项目属性 (ALT+F7),一旦出现新窗口,请执行以下操作:
在配置框中,选择所有配置
打开 Configuration Properties > C/C++ > General,然后编辑字段 Additional Include Directories 以添加这 3 个路径(用于标题):
C:\OpenCV2.3\build\include\opencv
C:\OpenCV2.3\build\include\opencv2
C:\OpenCV2.3\build\include
请注意,include\opencv
用于 OpenCV 的 C 接口,include\opencv2
用于 C++ 接口。我们还添加了文件夹 include
,以防止我们的构建被 C 接口的某些头文件破坏,这些头文件将 C++ 头文件称为opencv2\core
。
C:\OpenCV2.3\build\x86\vc9\lib
:李>
最后,对于这个简单的测试,我们将添加库opencv_core230.lib
和opencv_highgui230.lib
。所以去 Configuration Properties > Linker > Input 并添加它们:
在编写更复杂的应用程序时,您可能需要添加我没有添加的其他 OpenCV 库 在我们的这个小项目中提到过。
按 F7 来构建解决方案,您应该会看到:
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
为了能够执行应用程序,您需要在系统的modify the PATH environment variable 上添加 OpenCV DLL 的位置。将此添加到 PATH 的末尾:
; C:\OpenCV2.3\build\x86\vc9\bin
【讨论】:
@Elfoc 大幅改进了答案,逐步展示如何配置 OpenCV 2.3 和 VS2010。 我已将 e:\opencv\build\x86\vc9\bin 添加到系统 PATH 环境变量中。我收到运行时错误:未找到 opencv_core231d.dll .... 我使用的是 Visual Studio 2008,Pentium 4 m/c。知道是什么错误吗? 您是否在编辑 PATH var. 后重新启动了系统?需要重新启动,以便 VS 看到更改。 @karlphillip:您好,2.4.1 已发布。你能更新你的答案吗?或者程序是否相同。我按照这篇文章尝试过:***.com/q/10901905/1134940,但没有奏效。显示“计算机中缺少 opencv_core240d.dll”。 @karlphillip:我的朋友很棒。最后它对我有用。已经 +1-ed 这个答案。所以 +1 为您的其他链接。【参考方案2】:如果您在编辑 PATH 环境变量时遇到困难,您还可以将所需的 .dll 文件复制到您的项目文件夹中: dll文件位于此文件夹../OpenCV2.3/build.x86/vc9/bin
然后将它们复制到创建 .exe 文件的文件夹中: c:\Users\PIMMES\Documents\Visual Studio 2010\Projects\eigenfaces\Debug(当然你必须改变你的Debug文件夹的路径)
您只需要复制您在项目中使用的 .dll 文件(例如#include)例如,如果您收到一条错误消息说 opencv_core231d.dll 未找到,则从上述位置获取此 .dll 文件(bin 文件夹)并复制到您的项目 Debug 文件夹。
希望这会有所帮助..
【讨论】:
感谢您提出这种替代方法。它完美无缺。即使无法正确检测到 dll,我也正确编辑了环境路径变量。你能告诉我任何可能的原因吗?【参考方案3】:每当我制作一个使用 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")
【讨论】:
以上是关于为 Visual Studio 2010 设置 OpenCV-2.3的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2010 认为它处于调试模式(但它设置为发布模式)
Visual Studio 2015 属性页无法打开 Visual Studio 2010 属性
在 Visual Studio 2010 中构建任何 ffmpeg 项目时出现错误链接 2001 libavformat.a(tls_schannel.o)