您的位置:首页 > 运维架构

VC2008+OpenCV2.3.1 的安装配置

2013-03-25 21:47 686 查看

前言说明:

1. VC6.0 支持不了OpenCV2.3.1

2. 参考: http://www.opencv.org.cn/index.php/VC_2008_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.3.1

一. 安装OpenCV2.3.1 (不需要编译, 直接使用)


1.1 下载 OpenCV-2.3.1-win-superpack.exe和解压

http://www.opencv.org.cn/download/OpenCV-2.3.1-win-superpack.exe

(这是一个exe程序, 运行后按提示解压即可, 解压完也就是安装完了)

例如选择 C:\OpenCV231\目录



图1

解压界面:



图2

1.2 解压后的目录结构

解压后C:\OpenCV231\opencv的目录结构



图3

二. 创建VC控制台程序

2.1 创建VC控制台程序(其他类型的工程也行)

2.2 添加lib目录和include目录(你懂的)

C:\OpenCV231\opencv\build\x86\vc9\lib和C:\OpenCV231\opencv\build\include



图4

A. 我这里使用了绝对路径, 也可以把Include目录和lib目录拷贝到你的工程低下, 使用相对路径也可以的.

B. 我这里使用的运行时需要dll的.(在目录C:\\OpenCV231\opencv\build\x86\vc9\bin下)

2.3 输入如下代码:

#include "stdafx.h"

#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int _tmain(int argc, char* argv[])
{
const char* imagename = "lena.jpg";

//从文件中读入图像
Mat img = imread(imagename);

//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s\n", imagename);
return -1;
}

//显示图像
imshow("image", img);

//此函数等待按键,按键盘任意键就返回
waitKey();

return 0;
}


2.4 编译

编译通过, 连接失败. 所以要添加对应的lib(Release的对应Release的, Debug对应Debug的)

我这里的是这些

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



图5

再编译就通过了, 拷贝对应的dll到你的exe目录下, 或者把dll的目录添加到环境变量下, 运行即可.

Dll目录是C:\OpenCV231\opencv\build\x86\vc9\bin

三. 不使用dll

在安装完OpenCV后, 安装目录下有如下C:\OpenCV231\opencv\build\x86\vc9\staticlib, 里面有很多lib. 

但是我在工程中使用它们时, 在连接时报了各种各样的连接错误.

(使用这个目录下的lib(文件名带有231结尾)

最后发现需要自己编译才可以使用, 看如下步骤.

四. 编译OpenCV2.3.1

zlib.lib libjpeg.lib libjasper.lib libpng.lib libtiff.lib只能自己编译, 所以你还是要自己编译一遍.

4.1 下载cmake-2.8.10.2-win32-x86.exe 

http://www.cmake.org/cmake/resources/software.html

参考 http://www.opencv.org.cn/index.php/VC_2008_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.3.1 中的CMake的配置生成VC2008的工程.

4.2 编译OpenCV的VC2008工程

CMake生成的VC2008工程生成的是dll, 所以需要手动修改各个工程为静态库工程, 然后编译.

对这些工程修改为Static Library(.lib). (13个工程)

opencv_calib3d.lib

opencv_contrib.lib

opencv_core.lib

opencv_features2d.lib

opencv_flann.lib

opencv_gpu.lib

opencv_highgui.lib

opencv_imgproc.lib

opencv_legacy.lib

opencv_ml.lib

opencv_objdetect.lib

opencv_ts.lib

opencv_video.lib


zlib.lib libjpeg.lib libjasper.lib libpng.lib libtiff.lib这5个工程默认是Static Library(.lib)



图6



图7

4.3 lib的使用

Debug下(Release下对应修改即可):

opencv_calib3dd.lib

opencv_contribd.lib

opencv_cored.lib

opencv_features2dd.lib

opencv_flannd.lib

opencv_gpud.lib

opencv_highguid.lib

opencv_imgprocd.lib

opencv_legacyd.lib

opencv_mld.lib

opencv_objdetectd.lib

opencv_tsd.lib

opencv_videod.lib

libjpegd.lib

libtiffd.lib

libpngd.lib

libjasperd.lib

zlibd.lib

vfw32.lib

comctl32.lib

// 注意最后vfw32.lib和comctl32.lib也要添加


编译完后, 找到编译完成的lib, 使用即可.

在C:\\OpenCV231\opencv\3rdparty 和C:\\OpenCV231\opencv\modules目录下找到对应的静态lib(这些lib文件名没有231结尾)( 不要使用C:\OpenCV231\opencv\build\x86\vc9\staticlib目录下的静态lib)

C:\OpenCV231\opencv\build\x86\vc9\staticlib目录下的静态lib使用时, 你的工程会有报错的

小结:

如果直接使用dll的版本, 是很简单的, 解压后就可以使用了, 但是如果使用静态库的话,需要使用CMake生成OpenCVS的VC工程进行编译,
并且需要手动修改你所随用的工程为Static Library(.lib)属性.

编译成静态库使用, 把lib和include跟着工程走, 以后就不用换一个环境就编译一次OpenCV了. 当然用dll也可以的, 适合就好.

http://www.opencv.org.cn/index.php/VC_2008_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.3.1这个网址的说明已经很清楚了, 但是它的过程应该是默认你是使用dll的方式. 而我这里增加了使用lib的方式. 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: