VS2010中关于OpenCV 2.3.1开发环境配置及第一个OpenCV程序

1.在OpenCV中文网站( http://www.opencv.org.cn/index.php)上面下载 OpenCV-2.3.1-win的安装包。可以下载源码编译版,也可以下载安装包,还有OpenCV的参考手册。我这里下载了安装包( OpenCV-2.3.1-win-superpack.exe 文件)。
 
2.下载完点击安装,设置安装路径(这里的安装,更确切的说应该是解压),解压到C盘Program文件夹下面(个人习惯)。
 
3.简单说明一下OpenCV目录下各个文件是作用:
3rdparty 包含第三方库的实现代码,如zlib,ffmpeg,libjpeg等
android android开发相关文件
build 用于编译程序的lib文件和运行exe的dll文件
data 数据文件,如机器学习输出的xml文件
doc 帮助文档 include 头文件
modules opencv中各模块的源文件
samples 示例代码
 
4.告诉程序如何加载dll文件
以下三种方法任意一种都是可以的,根据情况任选其一:
1)配置环境变量:
右击“我的电脑”-“属性”-“高级系统设置”-“环境变量”,在系统环境变量中点击“新建”,输入“OpenCV_Path”和“C:\Program Files\opencv\build\x86\vc10\bin”,然后再PATH中增加“;%OpenCV_Path%”;
配置完后记得要重启电脑或者注销登录,配置才生效!
b) 拷贝到系统目录:
将对应dll拷贝到c:\windows\system32目录下;
c)拷贝到程序运行目录:
将dll拷贝到debug或release等exe输出目录下。
 
5.配置VS2010中的参数:
新建一个Win32控制台空项目。
以前配置VC++6.0、VS2005、VS2008都是在“工具”->“选项”->“项目与解决方案”->“VC++ 目录”中一次性配置好就可以了。但是到了VS2010后,当你按照前面的这个步骤操作时,会发现有提示“VC++目录编辑功能已被否决”。上网搜了许久,发现以下方法较好,一次性配置即可。
选择“视图”-“属性管理器”,双击Debug | Win32下的“Microsoft.Cpp.Win32.user”,如下图所示。
经过测试,VC2010是可以在SolutionExporer上面的右键项目选择属性修改一下配置的。
在弹出的配置框中配置,选择“VC++目录”(VC++Directories)。
1)、在“包含目录”(IncludeDirectories)中的结尾处(若结尾处无英文状态下的“;”则需自行添加“;”,下同)加入以下内容添加以下内容:
C:\Program Files\OpenCV\opencv\build\include\opencv;C:\Program Files\OpenCV\opencv\build\include\opencv2;C:\Program Files\OpenCV\opencv\build\include;
2)、在库目录和可执行文件目录(LibraryDirectories)中的结尾处加入以下内容添加:
C:\Program Files\OpenCV\opencv\build\x86\vc10\lib;
如下图所示。
3)、在“链接器”-“输入”-“附加依赖选项”("Linker"->"Input"->"AdditionalDependencies")中的结尾处加入.lib运行库文件。
注:lib可根据实际情况进行删减。
针对debug配置添加以下库:(注意,我这里使用的是 OpenCV-2.3.1-win的安装包,故opencv版本后缀有“3d231”,如果版本不同,应注意修改)
opencv_calib3d231d.lib
opencv_contrib231d.lib
opencv_core231d.lib
opencv_features2d231d.lib
opencv_flann231d.lib
opencv_gpu231d.lib
opencv_highgui231d.lib
opencv_imgproc231d.lib
opencv_legacy231d.lib
opencv_ml231d.lib
opencv_objdetect231d.lib
opencv_ts231d.lib
opencv_video231d.lib
如果是release配置(以后再说,只需要添加上面的debug配置就行了现在),则添加:
opencv_calib3d231.lib
opencv_contrib231.lib
opencv_core231.lib
opencv_features2d231.lib
opencv_flann231.lib
opencv_gpu231.lib
opencv_highgui231.lib
opencv_imgproc231.lib
opencv_legacy231.lib
opencv_ml231.lib
opencv_objdetect231.lib
opencv_ts231.lib
opencv_video231.lib
6.测试文件:
 
//把一张名为“pp.jpg”的照片放在工程目录下,编译运行后出现照片。
#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("pp.jpg");
if(img.empty())
{
cout<<"error";
return -1;
}
imshow("xx的靓照",img);
waitKey();
return 0;
}

//调用摄像头,如果成功运行,将显示出摄像头的视频。若不成功,尝试将以下语句中的“1”,改成-1,0或2 CvCapture* capture = cvCaptureFromCAM(1);
//#include "stdafx.h"
#include <highgui.h>
int main(int argc, char* argv[]){//_TCHAR*
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;
}

7.opencv配置好后运行出现错误:"计算机中丢失opencv_core231d.dll" 等dll文件的解决方案 :
(1)、注销或重启计算机,使得系统环境变量中的path生效;
(2)、通过path中设置的路径去寻找对应的dll文件,查看是否存在,是否被成功引用到VS中;
(3)、通过文件搜索功能,找到运行时提示的那个dll文件所在路径,并查看path的设置是否符合;
(4)、拷贝这个dll文件到VS工程目录下的debug和release目录中;
(5)、对比一下配置中的dll文件名是否和目录中的文件名对应,这里通常会出现因不同版本导致的不同文件名而配置时,却通过复制粘贴网上攻略导致一些错误的产生。例如:opencv 2.3.0版本的dll文件名应该是opencv_core230d.dll,而opencv2.3.1版本的dll文件名是opencv_core231d.dll,以此类推。
8.opencv配置好后运行出现错误:"LNK1112: module machine type 'x64' conflicts with target machine type 'X86' " 的解决方案 :
    这个和你的系统有关了,应该是你x64的系统配置了x86的lib库,或者x86的系统配置的x64的库,我在写上面这篇文章的时候使用的是x86的系统,最近在x64系统上重新搭建环境的时候就遇到这个问题,这只要你认真检查下你的PATH路劲添加的是x86的bin还是x64。如果path的x86的bin,那么vs2010里面的“VC++目录->库目录”就要是x86的lib,如果是x64就都要统一是x64。
下面的网上找到的其他解决方法,或许对那些不是相同问题但是遇到一样的报错的同学有帮助:
      1. To choose the x64 platform, click Build > Configuration Manager.  Under Active Solution Platform, select <New...> In the dialog that comes up, select x64 as the new platform (it may come up by default) and then click Ok.
      2. select the x64 platform in the VC window.
      3. Check the Linker > Command Line property page to make sure there is no /MACHINE switch there
          3.1    if you find /MACHINE ** in the additional options window, just deletle it.
         3.2.    if you find /MACHINE ** in the all options window, go to the Linker > Advanced property page and make sure that   Target Machine is "Not Set".
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值