深刻了解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 项目,编译并运行。阅读代码并且按照自己的想法更改它。
从
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
),可以在那里找到很多有用资料。
|
深刻了解OPENCV
最新推荐文章于 2022-12-12 09:34:30 发布