深刻了解OPENCV

转自: http://blog.csdn.net/hunnish
深刻了解OPENCV
作者:刘瑞祯 文章来源http://blog.csdn.net/hunnish 点击数: 954 更新时间:2007-1-12 下午 03:36:36
 
OpenCV Intel 资助的开源计算机视觉库。它由一系列  C  函数和少量  C++  类构成,实现了图像处理和计算机视觉方面的很多通用算法。
 
OpenCV  拥有包括  300  多个 C/C++ 函数的跨平台的中、高层  API 。它不依赖与其它的外部库,尽管也可以使用某些外部库。
 
OpenCV  对非商业应用和商业应用都是免费( FREE )的。(细节参考发布版本的  license )。 另外 OpenCV  也为 Intel 公司的  Integrated Performance Primitives (IPP)  提供了透明接口。 这意味着如果有为特定处理器(当然是 INTEL 的处理器了)优化的的  IPP  库,  OpenCV  将在运行时自动加载这些库。
 
更多关于  IPP  的信息请参考:  http://www.intel.com/software/products/ipp/index.htm
总纲:
C/C++ 编写的开源计算机视觉库。
目的是为了实时应用。
独立于操作系统 / 硬件 / 图形管理器。
通用的图像 / 视频载入、保存和获取模块。
底层和高层的应用开发包。
 
特征:
图像数据的操作  (  分配、释放、复制、设置和转换 )
图像是视频的输入输出 I/O  (文件与摄像头的输入、图像和视频文件输出)。
矩阵和向量的操作以及线性代数的算法程序(矩阵积、解方程、特征值以及奇异值等)。
各种动态数据结构(列表、队列、集合、树、图等)。
基本的数字图像处理(滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图、图像金字塔等)。
结构分析(连接部件、轮廓处理、距离变换、各自距计算、模板匹配、 Hough 变换、多边形逼近、直线拟合、椭圆拟合、 Delaunay  三角划分等)。
摄像头定标(发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计、立体对应)。 .
运动分析(光流、运动分割、跟踪)。
目标识别(特征法、隐马尔可夫模型: HMM )。
基本的 GUI  (图像与视频显示、键盘和鼠标事件处理、滚动条)。
图像标注(线、二次曲线、多边形、画文字)
 
OpenCV  模块:
cv –  主要的 OpenCV  函数。
cvaux –  辅助的(实验性的) OpenCV  函数。
cxcore –  数据结构与线性代数支持。
highgui  –  图像界面函数。
 
目前 OpenCV 方面的资源已经很多了,当然最简单的方法还是在网上搜索一下,比如在在  Google (http://www.google.com ) 中输入  "OpenCV"  进行相关搜索。这里给出一些作为参考:
 
参考手册:
英文: <opencv- root >/docs/index.htm
 
网络资源: :
官方网站: http://www.intel.com/technology/computing/opencv/
中文官方网站: http://www.opencv.org.cn/
 
书籍:
Open Source Computer Vision Library by Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006).
 
视频处理的样例程序  (  <opencv-root>/samples/c/)
彩色跟踪: camshiftdemo
点跟踪: lkdemo
运动分割: motempl
边缘检测:  laplace
图像处理的样例程序(在  <opencv-root>/samples/c/ ):
边缘检测:  edge
分割: pyramid_segmentation
形态学操作:  morphology
直方图: demhist
距离变换: distrans
椭圆拟合: fitellipse
目前 OpenCV 的最新版本是  2006 11 月发布的  OpenCV 1.0  版,它的一些新特性包括:
 
新函数与新特征
支持的新编译器 / 环境:
-        GCC 4.x
-        Visual Studio .NET 2005.
注意:
工程文件  .vcproj's  以及相应的环境文件均被转换成  VS.NET 2005  的格式,因此它们不能被  VS.NET 2003  打开。作为工作区,可以将工程文件和工作区转换为  Visual Studio 6.0 ,再转换到  VS.NET 2003 。工程可以在  Win32  以及  x64 (a.k.a. EM64T/AMD64)  平台上编译。默认情况下支持  OpenMP.
-          MacOSX  上,通用的  OpenCV  二进制代码可以在缺省情况下编译,因此  PPC   INTEL MAC‘S  系统全部都支持。
-         取消了对  Borland C++  的支持,但是仍然有一个脚本文件  utils/gen_make.py  可以通过生成文件 makefile.bcc's  来编译 (没有在  RC1  上测试)。
-         新的命令行  makefiles _make/makefile.*  被引入,允许用户在  Win64 (EM64T/AMD64 and Itanium)  平台上编译  OPENCV 。具体细节参考文件  INSTALL
cxcore
-         增加了一些新的函数: cvMixChannels, cvRandShuffle, cvRange, cvCalcPCA, cvProjectPCA, cBackProjectPCA,       cvNormalize, cvReduce, cvGetNumThreads, cvSetNumThreads, cvGetThreadNum.  更多细节参考  <opencv_root>/docs/ref/opencvref_cxcore.htm
-         扩展了函数  cvCalcCovarMatrix, cvMulTransposed
-         为库增加宏  cxcore/include/cvver.h
-          CvImage   CvMatrix  增加  C++  类: cxcore/include/cxcore.hpp  以及样例  samples/c/image.cpp
-         矩阵的最大通道数增加到  64  个,尽管只有一些特殊函数才处理这样的图像。
cv
-         新函数 :cvPyrMeanShiftFiltering, cvWatershed, cvGetAffineTransform.  更多细节见 docs/ref/opencvref_cv.htm
-         扩展 :cvDistTransform (true distance transform algorithm),      cvThresh (Otsu adaptive algorithm), cvCanny ( 使用真实梯度 )
-         所有的滤波函数重新编写过 , 为线性可分以及不可分滤波增加了新的  C++  , 并增加了 morphology, laplace, box filer .  cv/include/cv.hpp.
API  的变化 :
cvCamShift, cvBoxPoints  以及所有其它与角度有关的函数,现在都用角度而不是弧度返回
cvaux:
-         增加了新的大型视频监控模块,见 (cvaux/src/vs and cvaux/include/cvvidsurv.h) 。该模块完善了智能目标跟踪功能,见  docs/vidsurv  中的描述。
ml ( 机器学习 )
-         这是一个全新的为统计分类、回归以及聚类而写的  C++  类库  docs/ref/opencvref_ml.htm.
-         
highgui
-         所有的视频捕捉的代码在结构上都重新构造并且按模块划分,采用了更好的函数名字(原有的函数名字通过宏仍然支持)。
-         增加了对  Quicktime (MacOSX)   Xine (Linux, ( 注意查看相关的许可 )!))  的支持 .
捆绑与界面:
-         现在支持  IPP 5.1.* ,而这是一个推荐与 OPENCV 一起使用的版本。用户可以执行建立单独的 IPP DLL  作为二进制版本的分发。见 (interfaces/ipp)
-         大大提高并扩展了与  Python  的绑定 (  interfaces/swig[/python]  以及  samples/python).
 
优化
应用新的  IPP5.1  功能,下列的滤波函数都被大大优化: cvSobel, cvLaplace, cvErode, cvDilate.
cvFilter2D  对于大的内核运行得更快  ( 使用基于  DFT  的算法 )
 
一些函数可以使用  OPENMP  做并行处理: cvHaarDetectObjects, cvCalcOpticalFlowPyrLK, cvDistTransform ( 只是对于新算法适用 ) 。因此它们的运行速度在双核 CPU 上要快  ~50-80% ,  当代码用  Intel compiler  或者  MSVC2005  编译时。
 
OpenCV 是一个开源的项目,它的成长与完善均依赖于广大而热情的参与者,因此了解 OpenCV 的最有效方法无疑是通过互联网来自我学习和认识。当你拿到一个 OpenCV 版本时,要做的事情,简单而言是:
 
参考本书以及 OpenCV 安装包中提供的例子:大量的样例程序是了解 OpenCV 最直接的方法, OpenCV 本身所提供的例子均放置于: <opencv_root>/samples/  目录下, <opencv_root> 表示安装 OpenCV 后的系统目录。
 
 Visual Studio  中加载  OpenCV workspace
Microsoft Visual Studio 6.0  使用  opencv.dsw
Miscrosoft Visual Studio .NET 2003  使用  opencv.sln
Borland C++ BuilderX  使用  cbuilderx/opencv.bpgr 
选择  cvsample  项目,编译并运行。阅读代码并且按照自己的想法更改它。
 
http://groups.yahoo.com/group/OpenCVOpenCV archives  搜索你感兴趣的主题。
 scratch  创建新的项目,或者修改现有的  cvsample 有专门为  Microsoft Visual Studio  设计的  application wizard  用来创建  OpenCV-aware  项目;它们从  http://groups.yahoo.com/group/OpenCV  Files section -  你必须注册为  OpenCV@yahoogroups.com  用户)查找到。
 
参加 OpenCV 的邮件组,具体方法是发送邮件到  OpenCV-subscribe@yahoogroups.com ,成为成员後并登录後,你可以在  http://groups.yahoo.com/group/OpenCV  阅读内容。 另外也可以访问国内的一些 OpenCV 站点,如: OpenCV 中文站点( http://www.opencv.org.cn )以及 阿须数码 中文OPENCV论坛 http://www.assuredigit.com/forum  ),可以在那里找到很多有用资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值