vs2008 + OpenCV 2.2 win32 安装

发现opencv2.2加了很多新东西,试着装了一下,本来是想偷懒,直接下载vs2010版的文件,但是发现有些时候程序会莫名其妙崩溃。。。调了半天,最后下定决心自己编译opencv。上网找了很久才找到真正正确的安装方法,转载一下

准备软件:在安装openCV之前首先要保证机器中安装了以下软件:

1,C/C++编译器。我使用的是visual-Studio2008 Professional,当然使用VC++2008也是可以的。

2,安装CMake2.6或者最新版本。下载地址: http://www.cmake.org/cmake/resources/software.html 下载 Windows (Win32 Installer) 安装。

3,安装OpenCV2.2. 下载地址: http://www.opencv.org.cn/index.php/Download,要记住你自己的安装路径,我的安装路径是:D:/openCV/OpenCV2.2.

使用CMake编译openCV:

安装了以上3个软件后,就需要使用CMake编译openCV了

1,  运行cmake-gui,在where is the source code中填入你的openCV路径:D:/openCV/OpenCV2.2;where to build the binaries中填入你要存放编译结果的路径:D:/openCV/OpenCV2.2/vs2008。

2, 点configure,在弹出的对话框中选择Visual Studio 9 2008 。

3,如果有红色框显示,继续点击configure。

4,configure完成之后,点击generate。

上述步骤完成之后,在vs2008文件夹中,就会看到有OpenCV.sln文件。

编译OpenCV Debug和Release版本库:

使用VS2008打开OpenCV.sln文件,在Debug下,选择OpenCV.sln文件,然后进行如下操作:

在Debug下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。

配置Windows环境变量:

将D:/openCV/OpenCV2.2/vs2008/bin加入到系统环境变量Path中。这个应该都会的吧。

(很重要,在这一步栽了跟头)

path

D:/openCV/OpenCV2.2/vx2008/bin;

E:/Program Files/Microsoft Visual Studio/Common/Tools/WinNT;

E:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin;

E:/Program Files/Microsoft Visual Studio/Common/Tools;

E:/Program Files/Microsoft Visual Studio/VC98/bin;D:/Program Files/CMake 2.8/bin

为VS2008 配置openCV环境:

1 打开VS 2008,菜单 Tools -> Options -> Projects and Solutions -> VC++ Directories

2 在Show directories for中,选择include files,加入目录 D:/openCV/OpenCV2.2/ include/opencv,和D:/openCV/OpenCV2.2/ include

3 在show directories for中,选择library files,加入目录 D:/openCV/OpenCV2.2/ lib

 

 

openCV使用:

1 打开VS 2008 Express,创建一个Win32控制台程序openCVhello;

2 选择Solution Explorer里的openCVhello项目,点击鼠标右键,选择Properties,选择Linker中Input。

3 在Additional Dependencies 中添加如下目录:

D:/openCV/OpenCV2.2/vs2008/lib/opencv_core220d.lib D:/openCV/OpenCV2.2/vs2008/lib/opencv_highgui220d.lib D:/openCV/OpenCV2.2/vs2008/lib/opencv_video220d.lib D:/openCV/OpenCV2.2/vs2008/lib/opencv_ml220d.lib D:/openCV/OpenCV2.2/vs2008/lib/opencv_legacy220d.lib D:/openCV/OpenCV2.2/vs2008/lib/opencv_imgproc220d.lib

(其实我的如下配置就可以了)

 

opencv_core220d.lib opencv_imgproc220d.lib opencv_highgui220d.lib

opencv_core220.lib opencv_imgproc220.lib opencv_highgui220.lib

 

4 openCVhello的程序如下:

// openCVhello.cpp : Defines the entry point for the console application.

//

 

#include "stdafx.h"

#include 

#include 

#include 

 

int _tmain(int argc, _TCHAR* argv[])

{

     // open the file

     IplImage *img = cvLoadImage("ant1.jpg");

     if (!img)

     {

         printf("Error: could not open the image file./n");

         return 1;

     }

     // display the image

     cvNamedWindow("Image:",CV_WINDOW_AUTOSIZE);

     cvShowImage("Image:",img);

 

     // wait for the user to press a key in the GUI window

     cvWaitKey(0);

 

     // Free the resourse

     cvDestroyWindow("Image:");

     cvReleaseImage(&img);

 

     return 0;

}

这样,就可以成功运行~祝大家好运~

如果有不清楚的,可以参看官方网站:http://opencv.willowgarage.com/wiki/VisualC%2B%2B

一般,按照上述步骤就可以安装成功的,我在xp上可以成功安装,但在win7上遇到了问题,出现mscvp100d.dll不存在,出现异常,试论很多方法后都不能解决,最后一个很简单的方法搞定了:将vs2008中的bin文件夹中所有的.dll文件和lib文件夹中的所有.lib文件拷到OpenCV2.2对应的文件夹中,覆盖其相同文件,就可以了成功运行了~遇到同样问题的可以试一下~

 

 

 

疯子007童鞋翻译了opencv 2.2的官方网站 ,在还没有得到允许的情况下我就转载了过来,让我们掌声感谢疯子007 童鞋

总体修改和改进:

  • 重新组织库结构,用较详细,更小的模块来取代cxcore, cv, cvaux, highgui 和 ml库
    • opencv_core – core函数库(基本的结构,架构和线性代数,DFT,xml 和yam i/o接口函数等)
    • opencv_imgproc -图像处理函数库(滤波,高斯模糊,形态学膨胀/腐蚀,线性缩放图像大小,图像几何变化,颜色结构变化,计算直方图等)
    • opencv_highgui – GUI,图像和视频接口函数库
    • opencv_ml -统计机器学习模型函数库(SVM,决策树,级联等)
    • opencv_features2d -二维特征检测器和描述子函数库(SURF,FAST 等,包括一种新的特征描述子匹配结构)
    • opencv_video -动态分析和物体追踪函数库(光流法,移动模板,背景消除)
    • opencv_objdetect -图像目标检测函数库(haar小波 & LBP人脸检测和识别,HOG人检测等)
    • opencv_calib3d -摄像头标定,视觉匹配和三维数据处理函数库
    • opencv_flann -近似最近领域搜索库和OpenCV分装器
    • opencv_contrib - 最新贡献但不是很成熟的函数库
    • opencv_legacy -过时代码,为了后续代码兼容性而存在
    • opencv_gpu -用CUDA来加速一些openCV函数的类库(相对不太稳定,但对openCV开发非常有帮助)

如果你用Cmake 或者pkg-config来进行配置openCV,如果没有任何改动,你的源码编译会正常。否则,你需要修改连接参数(修改库名)和更新头文件路径。

仍然支持使用#include 等,但是备注修改为 #include “opencv2/imgproc/imgproc.hpp”等等。

请查看新的c和c++例子文件,你会发现,这样样例的头文件都采用了新的引用格式。如:https://code.ros.org/svn/opencv/trunk/opencv/samples/c/blobtrack_sample.cpp (这是我自己加的,原文没有,便于大家查看)

  • 新格式的分装器覆盖了更多的opencv2.x API,文档和例子将在后面加上。为了采用额外的函数库,你需要numpy

SWIG-不在包含Python分装器

  • OpenCV现在支持Android开发(GSoC 2010 工程),一些样例可以在http://opencv.willowgarage.com/wiki/Android 找到
  • 完整全新的opencv_gpu加速器模块由NVidida开发支持,详细请看下面。

新的函数,特征集

  • core:
    • cv::Matx 可以增加给定类型,给定大小矩阵

Vec 由 Matx派生,此类可被用于cv::Mat开销过大时的小矩阵。此操作子可实现Matx 和 Mat相互转换。

    • cv::Mat ,cv::MatND 是同一类型: typedef cv::Mat cv::MatND. 考虑到很多函数没有检查矩阵维数,在用openCV处理3维,4维等高维矩阵时要小心。
    • 实验支持支持2.x/3.x特征 (在Cmake参数选择WITH_EIGEN2). 同时,可以实现Eigen2 matrices和cv::Mat相互转换。详情查看modules/core/include/opencv2/core/eigen.hpp.
    • cv::Mat 支持”<<”操作。详情查看  opencv/samples/cpp/cout_mat.cpp.
    • cv::exp ,cv::log由于SSE2的优化,速度更快
  • imgproc:
    • 颜色转换函数被重写;
      • RGB->Lab & RGB->Luv 得到明显改善。函数假设sRGB输入颜色空间(比如,gamma=2.2),如果你想要原始线性RGB->L**转换 ,采用CV_LBGR2LAB
      • VNG 算法增加了Bayer->RGB。虽然比简单迭代算法慢了很多,但是更详细的图像信息
      • 对8位图增加了RGB->HSV/HLS 转换函数 ,这里H通道采用完整的 0..255 区域,而不是原来的0..179区域。转换代码为CV_RGB2HSV_FULL等。
      • initUndistortRectifyMap为多角度摄像头增添了专用变量: initWideAngleProjMap()
  • features2d:
    • 引入关键点检测,计算描述子和匹配的统一架构。先前的一些可用和新的监测子和描述子,比如SURF,Fast, StarDetector 等,被分装在这个架构中。这个架构的关键的特点(除了为不同检测子和描述子统一的API)是他为图像匹配和基于纹理的物体检查提供了高层工具,详情请看http://opencv.willowgarage.com/documentation/cpp/features2d_common_interfaces_of_feature_detectors.html

C++样例:

      • descriptor_extractor_matcher.cpp –采用关键点和描述子 从场景中查找物体
      • generic_descriptor_matcher.cpp – 在物体上采用变动,可以使描述子计算不必太精确。
      • bagofwords_classification.cpp –一个用这种架构处理VOC下载的数据的例子,VOC数据集:http://pascallin.ecs.soton.ac.uk/challenges/VOC/
      • Ethan Rublee集成了由Michael Calonder提出的最新更快的关键点描述子BRIEF。例子请查看opencv/samples/cpp/video_homography.cpp
      • SURF 关键点检测子采用TBB (此模块由 imahon 和yvo2m开发)进行并行计算
  • objdetect:
    • LatentSVM 物体检查子,应用于P. Felzenszwalb的算法,由Nizhniy Novgorod State University (NNSU) team开发.详情请查看opencv/samples/c/latentsvmdetect.cpp
  • calib3d:
    • 一种新的合理的标定模型:

x’ = x*(1 + k1 *r2 + k2 *r4 + k3 *r6 )/(1 + k4 *r2 + k5 *r4 + k6 *r6 ) + ,

y’ = y*(1 + k1 *r2 + k2 *r4 + k3 *r6 )/(1 + k4 *r2 + k5 *r4 + k6 *r6 ) +

被引入。对广角镜头的摄像头标定很有用,因为增加的参数可以优化你所提供数据和增加估计这些数据的鲁棒性。 或者可以简单的初始化畸变向量为0,并 且 CV_CALIB_RATIONAL_MODEL +CV_CALIB_FIX_K3 + CV_CALIB_FIX_K4 + CV_CALIB_FIX_K5 或 者其他连接去选择去增强或者取消一些系数

    • 增加校正三目摄像头(三目在同一水平线上),详情请查看 samples/cpp/3calibration.cpp
  • ml:
    • 引入由NNSU工作组开发的梯度级联树模型
  • highgui:
    • 增加支持 Qt 后台开发,源于由Yannick Verdie完成的GSoC 2010工程。后台开发有一些新特征没有体现,如采用TTF字体的文字翻译 ,独立的控制面板,包括滚动条,按钮,单选按钮,复选按钮,大小变化,图像显 示区,highgui 窗体, “保存”等等。详情请看Yannick在youtube视频演示新特征:http://www.youtube.com/user/MrFrenchCookie#p/u
    • 新的API被引入: http://opencv.willowgarage.com/documentation/cpp/highgui_qt_new_functions.html ,如果你机器上有 Qt SDK (或者 libqt4 开发包),可以采用新的API,并且采用QT编译OpenCV (pass-DWITH_QT=ON to CMake; 注意结果,确认Qt为GUI后台编译)
    • 支持16位和LZW-压缩TIFFs
    • 支持Linux环境下IEEE1394 模式的摄像头
  • contrib:
    • 增加Marius Muja,Antonella Cascitelli, Marco Di Stefano ,Stefano Fabri开发的斜面匹配算法. 详情查看 samples/cpp/chamfer.cpp
  • gpu:
    • 这一部分是OpenCV的全新部分,由NVidia开发并支持。注意,此开发包处于测试阶段,所以在开发时请注意和关注OpenCV SVN 的更新。

在采用gpu,需要安装最新的 NVidia CUDA SDK ,并且采用CUDA 编译OpenCV (-DWITH_CUDA=ON CMake flag).所有函数采用cv::gpu namespace命名空间。完整的函数和类在opencv/modules/gpu/include/opencv2/gpu/gpu.hpp,下面 是 API中一些主要组成部分:

    • 图像计算,滤波操作,形态学,几何变换,直方图计算
    • 立体视觉匹配算法:块匹配, Belief Propagation 和Constant-Space Belief Propagation.
    • 基于HOG物体检查子。It runs more than order of magnitude faster than the CPU version!
      • See opencv/samples/gpu
  • python bindings:
    • 大量 OpenCV 2.x 函数被转换为Python 语言。

这些新的分装需要安装numpy (请查看http://opencv.willowgarage.com/wiki/InstallGuide ).

同理,C++ API,在python环境下,不需要定位输出数组,他们会自动由相互函数创建,下面是一个小例子:

§       import cv

§

§       a=cv.imread(“lena.jpg”,0)

§       b=cv.canny(a, 50, 100, apertureSize=3)

§       cv.imshow(“test”,b)

§       cv.waitKey(0)

在例子中, a和 b 是普通 numpy 数组,所以OpenCV 函数完全支持numpy 和 scipy

PS.在你用opencv2.2的时候,记得库已经不是原来的库的,记得换库

参考:http://www.cvchina.info/2010/12/13/chinese-opencv/

========================================================================

再写一下后来发现的更换的函数吧

#include 改为

#include "opencv2/video/background_segm.hpp"

当然,还要在设置那里加入opencv_video220.lib。

你可能感兴趣的:(图像处理,descriptor,cuda,nvidia,cuda,qt,dependencies,installer)