opencv在vs2008上的安装

前些日子做DIP的meanshift课设要用到opencv,电脑之前装过vs2010,后来重装系统之后就没再装了,没想到这回安装vs2010时出现了应用程序错误报告,导致无法正常安装。接着下了最新版的vs2012,依然是这个问题无法安装。有人说先安个ms的周边产品,如:ms live之后,就可以安装vs了,但是我似乎还是没能解决问题。无奈之下,我选择了vs2008,经过一个小时跋涉,电脑终于可以跑vs2008了,可知塞翁失马焉知非福,这也为后来的失败买下了伏笔。

在安装opencv的时候,我就有点好奇,opencv的官网上说有两种版本,一种是已经编译好的,一种需要自己编译的。编译好的版本,里面有lib了。需要自己编译的版本,还需要安装cmake等等软件来自己编译。于是我果断选择了已编译好的版本了,但是解压后得到的文件目录让我有点疑惑。虽然是已经编译好的版本,但是里面却还有cmake等目录,而且目录结构和未编译版本的一模一样,我一直以为是自己下错了,但是在官网上找了个遍,发现也就这个版本了。后来才知道原来编译好的lib文件都放在了./opencv/build里面,而不像官网上面说的在./opencv/lib里面。接下来就讲讲opencv在vs2008上的配置了。

配置大概需要配置include路径、配置lib路径、设置环境变量。

1.配置环境变量,告诉vs去哪里找opencv的头文件,选择菜单“工具”->“选项”->“项目和解决方案”->“VC++目录”->“包含文件”,包含 

D:\Program Files\OpenCV2.3.1\opencv\build\include;

D:\Program Files\OpenCV2.3.1\opencv\build\include\opencv;

D:\Program Files\OpenCV2.3.1\opencv\build\include\opencv2

 如果是自己编译的则输入D:\Program Files\OpenCV2.3.1\opencv\build\my\install\include

2.配置lib路径,告诉vs去哪里找opencv的库文件,选择菜单“工具”->“选项”->“项目和解决方案”->“VC++目录”->“库文件”

  • 自己编译的库,库目录为:D:\Program Files\OpenCV2.3.1\opencv\build\my\install\lib
  • 32位系统 & VC2008,库目录为:D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc9\lib
  • 32位系统 & VC2010,库目录为:D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc10\lib
  • 64位系统 & VC2008,库目录为:D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc9\lib
  • 64位系统 & VC2010,库目录为:D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc10\lib
  • 我出错的地方也就在这里了!!!我在网上搜的一些教程都是针对vs2010的,里面配置的lib路径都是vc10的,而我也傻傻的跟着配置。在跑工程时,能编译通过,但是运行exe文件时总是出现“无法正确打开”的错误,错误码为0xc000007b。后来偶然间看到有人说是lib版本的问题,于是抱着试一试的态度,把路径改成了vc9,果然success!

3.设置环境变量,将opencv的dll文件所在的目录加载path环境,如下:

  • 自己编译的库,dll目录为:D:\Program Files\OpenCV2.3.1\opencv\build\my\install\bin
  • 32位系统 & VC2008,dll目录为:D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc9\bin
  • 32位系统 & VC2010,dll目录为:D:\Program Files\OpenCV2.3.1\opencv\build\x86\vc10\bin
  • 64位系统 & VC2008,dll目录为:D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc9\bin
  • 64位系统 & VC2010,dll目录为:D:\Program Files\OpenCV2.3.1\opencv\build\x64\vc10\bin

由于有些函数需要TBB,所以需要将tbb所在的目录也加入到环境变量Path中。TBB相关的DLL路径为:

  • 32位系统 & VC2008:D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\ia32\vc9
  • 32位系统 & VC2010:D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\ia32\vc10
  • 64位系统 & VC2008:D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\intel64\vc9
  • 64位系统 & VC2010:D:\Program Files\OpenCV2.3.1\opencv\build\common\tbb\intel64\vc10

如下图所示将OpenCV和TBB的dll文件所在的目录系统环境变量Path中。加入后可能需要注销当前Windows用户(或重启)后重新登陆才生效

4.使用opencv在vs里面编程时,还需要对工程进行设置。具体如下:

在[链接器 LINKER]的[输入INPUT]中,为项目的Debug配置增加 [附加依赖项 Additional Dependencies]: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 (可根据实际需要删减)注意,请打开了新编辑窗口(即点击了“...”按钮)“附加依赖项”,并一条一条分别加入,一条一行(一个回车),(注意行末不要加";")。其中数字231代表你opencv的版本,如果你是opencv2.4.1的版本,则要全部替换成241。这边这两点很重要。


最后附上一段代码用于测试:

#include<highgui.h>

typedef struct CvCapture CvCapture;

void main()
{
CvCapture * pCapture;
IplImage *pImage;
bool bIsExit = false;


    cvNamedWindow("xiaowangzi", CV_WINDOW_AUTOSIZE);
//cvResizeWindow("xiaowangzi", 00, 1000);
cvMoveWindow("xiaowangzi", 100,100);    //设置window位置

pCapture = cvCreateCameraCapture(-1);  //开启摄像头

while(!bIsExit)
{
pImage = cvQueryFrame(pCapture); //获取摄像头的帧画面
cvShowImage("xiaowangzi", pImage); //显示图片,需要和cvWaitKey搭配使用,否则出错
if ('q' == cvWaitKey(10)) //键盘响应,按q退出
{
bIsExit = true;
}


}
//cvReleaseImage(&pImage);  //清楚各种系统资源
cvReleaseCapture(&pCapture);
cvDestroyWindow("xiaowangzi");

}

祝你成功!微笑


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值