现在的位置: 首页 > 综合 > 正文

VC2008+OpenCV2.3.1 的安装配置

2013年10月07日 ⁄ 综合 ⁄ 共 2840字 ⁄ 字号 评论关闭

前言说明:

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\libC:\OpenCV231\opencv\build\include

图4

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

B. 我这里使用的运行时需要dll.

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_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

图5

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

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

三. 不使用dll

使用静态库的话需要指定C:\OpenCV231\opencv\build\x86\vc9\staticlib目录

并添加

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 zlib.lib libjpeg.lib libjasper.lib libpng.lib libtiff.lib opencv_video.lib vfw32.lib comctl32.lib

红色的lib zlib.lib libjpeg.lib libjasper.lib libpng.lib libtiff.lib默认是没有的需要自己编译;

vfw32.libcomctl32.libVC本身有的;

没有comctl32.lib会报这个错误error LNK2001: unresolved external symbol __imp__CreateToolbarEx@52

四. 编译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 编译OpenCVVC2008工程


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

看下图有这么多个工程批量选中工程设置为静态库工程编译

图6

图7

4.3 lib的使用


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

小结:

如果直接使用dll的版本是很简单的解压后就可以使用了但是如果使用静态库的话那解压后有些静态库是需要自己编译的并且由于lib的那种菱形使用关系的原因使得有些函数不知道在哪个lib例如(zlib.lib libjpeg.lib libjasper.lib libpng.lib libtiff.lib vfw32.lib comctl32.lib)找这几个lib的连接错误用了很多时间.

编译成静态库使用libinclude跟着工程走以后就不用换一个环境就编译一次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的方式

抱歉!评论已关闭.