快速学习OPENCV常用函数
cv2库函数

cv2 库是OpenCV(Open Source Computer Vision Library)的Python 接口。
OpenCV 是一个开源计算机视觉库,提供了许多用于图像处理和计算机视觉任务的函数。
以下是一些常用的cv2 库函数,涵盖了图像处理、计算机视觉和计算机图形学等领域:图像读取和显示:cv2.imread():读取图像文件。
cv2.imshow():显示图像窗口。
cv2.imwrite():保存图像。
颜色空间转换:cv2.cvtColor():进行颜色空间的转换,例如从BGR 到灰度。
图像处理:cv2.resize():调整图像大小。
cv2.flip():翻转图像。
cv2.rotate():旋转图像。
cv2.threshold():图像二值化。
滤波器和卷积:cv2.filter2D():2D 卷积。
cv2.blur():均值模糊。
cv2.GaussianBlur():高斯模糊。
边缘检测:cv2.Canny():Canny 边缘检测。
轮廓和形状分析:cv2.findContours():查找图像中的轮廓。
cv2.drawContours():绘制轮廓。
图像特征和描述符:cv2.SIFT():尺度不变特征变换。
cv2.SURF():加速稳健特征。
计算机视觉:cv2.matchTemplate():模板匹配。
cv2.findHomography():查找透视变换。
cv2.solvePnP():解决透视问题。
摄像头和视频处理:cv2.VideoCapture():打开摄像头。
cv2.VideoWriter():写入视频文件。
cv2.VideoCapture.read():读取摄像头帧。
图像绘制:cv2.line():绘制直线。
cv2.circle():绘制圆。
cv2.rectangle():绘制矩形。
这只是cv2 库中一小部分常用函数的列表。
OpenCV 提供了丰富的功能,适用于各种计算机视觉和图像处理任务。
opencv基本使用方法

OpenCV基本使用方法一、介绍O p en CV是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉算法,可以用于图像处理、目标检测、人脸识别等各种应用。
本文档将介绍O pe nC V的基本使用方法,包括图像读取、显示、保存以及常用的图像处理操作。
二、图像读取与显示1.读取图像要读取图像,可以使用`cv2.im re ad()`函数。
该函数接受图像文件的路径作为参数,并返回一个表示图像的多维数组。
i m po rt cv2i m ag e=cv2.im re ad("im ag e.jp g")2.显示图像要显示图像,可以使用`cv2.im sh ow()`函数。
该函数接受一个窗口名称和一个表示图像的多维数组作为参数。
i m po rt cv2i m ag e=cv2.im re ad("im ag e.jp g")c v2.im sh ow("Im age",i ma ge)c v2.wa it Ke y(0)c v2.de st ro yA ll Wind ow s()三、图像保存与格式转换1.保存图像要保存图像,可以使用`cv2.im wr it e()`函数。
该函数接受图像保存的路径和表示图像的多维数组作为参数。
i m po rt cv2i m ag e=cv2.im re ad("im ag e.jp g")c v2.im wr it e("n ew_i ma ge.j pg",im age)2.格式转换要将图像从一种格式转换为另一种格式,可以使用`c v2.c vt Co lo r()`函数。
该函数接受表示图像的多维数组和转换的标志作为参数。
i m po rt cv2i m ag e=cv2.im re ad("im ag e.jp g")g r ay_i ma ge=c v2.cv t Co lo r(im ag e,cv2.CO LO R_BG R2GR AY)四、常用的图像处理操作1.转换为灰度图要将彩色图像转换为灰度图,可以使用`c v2.cv tC ol or()`函数,并指定转换标志为`cv2.CO LO R_BG R2GR AY`。
opencv 坐标变换函数

opencv 坐标变换函数OpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉算法。
在OpenCV中,坐标变换是常用的操作之一,它可以帮助我们将图像或物体从一个坐标系转换到另一个坐标系,以适应不同的需求或处理流程。
OpenCV提供了一些函数来实现坐标变换,包括平移、旋转、缩放和仿射变换等。
下面将逐个介绍这些函数的用法和作用。
1. 平移变换(translation):通过平移变换,我们可以将图像或物体沿着x和y轴方向移动一定的距离。
在OpenCV中,可以使用`cv2.warpAffine`函数来实现平移变换。
该函数接受一个输入图像、一个平移矩阵和输出图像的大小作为参数,返回经过平移变换后的图像。
2. 旋转变换(rotation):通过旋转变换,我们可以将图像或物体按照一定的角度进行旋转。
在OpenCV中,可以使用`cv2.getRotationMatrix2D`函数来获取旋转矩阵,然后使用`cv2.warpAffine`函数进行旋转变换。
该函数接受一个输入图像、一个旋转矩阵和输出图像的大小作为参数,返回经过旋转变换后的图像。
3. 缩放变换(scaling):通过缩放变换,我们可以将图像或物体按照一定的比例进行放大或缩小。
在OpenCV中,可以使用`cv2.resize`函数来实现缩放变换。
该函数接受一个输入图像和输出图像的大小作为参数,返回经过缩放变换后的图像。
4. 仿射变换(affine transformation):通过仿射变换,我们可以对图像或物体进行平移、旋转和缩放等多个操作的组合。
在OpenCV 中,可以使用`cv2.getAffineTransform`函数来获取仿射矩阵,然后使用`cv2.warpAffine`函数进行仿射变换。
该函数接受一个输入图像、一个仿射矩阵和输出图像的大小作为参数,返回经过仿射变换后的图像。
除了上述函数之外,OpenCV还提供了其他一些函数来实现更复杂的坐标变换,如透视变换(perspective transformation)和反向变换(inverse transformation)等。
OpenCV入门教程

O p e n C V入门教程-CAL-FENGHAI.-(YICAI)-Company One1OpenCV 入门教程作者:于仕琪年 8 月版权所有于仕琪本作品采用知识共享署名-相同方式共享国际许可协议进行许可。
1前言OpenCV 是一个广受欢迎的开源计算机视觉库,它提供了很多函数,实现了很多计算机视觉算法,算法从最基本的滤波到高级的物体检测皆有涵盖。
很多初学者希望快速掌握OpenCV 的使用方法,但往往会遇到各种各样的困难。
其实仔细分析,造成这些困难的原因有两类:第一类是C/C++编程基础不过关;第二类是不了解算法原理。
解决这些困难无非提升编程能力,以及提升理论基础知识。
提升编程能力需要多练习编程,提升理论知识需要系统学习《数字图像处理》、《计算机视觉》和《模式识别》等课程,所有这些都不能一蹴而就,需要耐下心来认真修炼。
同时我们也需要认识到 OpenCV 只是一个算法库,能为我们搭建计算机视觉应用提供“砖头”。
我们并不需要完全精通了算法原理之后才去使用 OpenCV,只要了解了“砖头”的功能,就可以动手了。
在实践中学习才是最高效的学习方式。
本小册子希望为初学者提供引导,使初学者快速了解 OpenCV 的基本数据结构以及用法。
此外,如您发现有错误之处,欢迎来信指正。
于仕琪深圳大学插播广告:欢迎有能力、有激情以及对计算机视觉有兴趣的同学报考我的研究生。
欲了解详情可以访问深圳大学招生网或者给我发 email。
目录第 1 章预备知识 (5)编程的流程 (5)什么叫编辑 (6)什么叫编译 (6)什么叫连接 (7)什么叫运行 (7)Visual C++是什么 (8)头文件 (9)库文件 (10)OpenCV 是什么 (11)什么是命令行参数 (12)常见编译错误 (13)找不到头文件 (13)拼写错误 (14)常见链接错误 (15)运行时错误 (17)第 2 章OpenCV 介绍 (19)OpenCV 的来源 (19)OpenCV 的协议 (19)第 3 章图像的基本操作 (21)图像的表示 (21)Mat 类 (23)创建 Mat 对象 (24)构造函数方法 (24)create()函数创建对象 (25)Matlab 风格的创建对象方法 (26)矩阵的基本元素表达 (26)像素值的读写 (27)at()函数 (28)使用迭代器 (29)通过数据指针 (30)选取图像局部区域 (32)单行或单列选择 (32)用 Range 选择多行或多列 (33)感兴趣区域 (33)取对角线元素 (34)Mat 表达式 (34)Mat_类 (36)Mat 类的内存管理 (38)输出 (40)Mat 与 IplImage 和 CvMat 的转换 (42)Mat 转为 IplImage 和 CvMat 格式 (42)IplImage 和 CvMat 格式转为 Mat (42)第 4 章数据获取与存储 (44)读写图像文件 (44)读图像文件 (44)写图像文件 (45)读写视频 (47)读视频 (47)写视频 (49)第1章预备知识OpenCV 是一个功能强大的计算机视觉库,要用好它,除了要具有相关的计算机视觉理论知识外,还需要具有一定的编程能力。
opencv所有函数汇总

opencv所有函数汇总OpenCV是一个开放源代码的计算机视觉和机器学习软件库。
它拥有多种函数和方法,可用于处理图像和视频、目标检测、特征提取、图像分割、图像配准、机器学习等多个领域。
以下是一些常用的OpenCV函数的汇总:1. cv2.imread该函数读取图像文件,并返回一个NumPy数组,该数组表示图像的像素值。
2. cv2.imshow用于在窗口中显示图像。
3. cv2.imwrite将图像保存到指定的文件路径。
4. cv2.cvtColor用于将图像从一个颜色空间转换为另一个颜色空间。
5. cv2.resize可用于调整图像的大小。
6. cv2.flip用于翻转图像。
7. cv2.rectangle绘制矩形框。
8. cv2.circle绘制圆形。
9. cv2.line绘制线条。
10. cv2.putText在图像上绘制文本。
11. cv2.threshold将图像分割为黑白两个阈值。
12. cv2.adaptiveThreshold根据图像不同区域的光照条件对图像进行阈值处理。
13. cv2.medianBlur对图像进行中值滤波。
14. cv2.GaussianBlur对图像进行高斯模糊。
15. cv2.bilateralFilter对图像进行双边滤波。
16. cv2.contourArea计算轮廓的面积。
17. cv2.findContours找到图像中的轮廓。
18. cv2.drawContours在图像上绘制轮廓。
19. cv2.matchTemplate在图像中查找指定模板的匹配项。
20. cv2.HoughCircles在图像中检测圆。
21. cv2.HoughLines在图像中检测直线。
22. cv2.goodFeaturesToTrack在图像中寻找角点。
23. cv2.findHomography计算两个图像之间的单应性矩阵。
24. cv2.warpPerspective将图像进行透视变换。
cv2库函数

cv2库函数OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉功能。
在OpenCV中,cv2是一个用于Python的库,它提供了大量用于图像处理和计算机视觉任务的函数。
在本文中,我们将介绍一些常用的cv2库函数,以帮助读者更好地了解如何使用OpenCV进行图像处理和计算机视觉任务。
1. 读取和显示图像:cv2.imread()和cv2.imshow()cv2.imread()函数用于读取图像文件,可以指定图像文件的路径和读取模式。
读取的图像会以NumPy数组的形式返回,可以方便地进行后续处理。
cv2.imshow()函数用于显示图像,可以指定窗口的名称和要显示的图像。
通过这两个函数,我们可以快速读取和显示图像文件,方便进行后续处理和分析。
2. 图像的灰度化:cv2.cvtColor()cv2.cvtColor()函数用于将彩色图像转换为灰度图像,可以指定转换的颜色空间。
在图像处理和计算机视觉任务中,常常需要将彩色图像转换为灰度图像进行后续处理,比如边缘检测、特征提取等。
通过cv2.cvtColor()函数,可以方便地进行灰度化处理,为后续任务提供更好的基础。
3. 图像的缩放和裁剪:cv2.resize()和数组切片cv2.resize()函数用于对图像进行缩放操作,可以指定目标图像的大小和缩放模式。
图像缩放是图像处理和计算机视觉任务中常用的操作,可以用于调整图像的大小、改变图像的分辨率等。
除了cv2.resize()函数外,还可以使用NumPy数组的切片操作进行图像的裁剪,实现对图像的局部操作和提取感兴趣的区域。
4. 图像的边缘检测:cv2.Canny()cv2.Canny()函数用于对图像进行边缘检测,可以指定边缘检测的参数和阈值。
边缘检测是图像处理和计算机视觉任务中常用的操作,可以用于检测图像中的边缘和轮廓,提取图像的关键信息。
opencv常用函数

01、cvL oad:矩阵读取;102、c vOpen FileS torag e:为读/写打开存储文件;103、cv Relea seFil eStor age:释放存储的数据;104、cvS tartW riteS truct:开始写入新的数据结构;105、cvE ndWri teStr uct:结束写入数据结构;106、cv Write Int:写入整数型;107、cvWri teRea l:写入浮点型;108、cv Write Strin g:写入字符型;109、cv Write Comme nt:写一个XML或YAML的注释字串;110、cvWri te:写一个对象;111、cvWr iteRa wData:写入多个数值;112、cv Write FileN ode:将文件节点写入另一个文件存储器;113、cvGet RootF ileNo de:获取存储器最顶层的节点;114、cvGet FileN odeBy Name:在映图或存储器中找到相应节点;115、cvGet Hashe dKey:为名称返回一个惟一的指针;116、cv GetFi leNod e:在映图或文件存储器中找到节点;117、cvG etFil eNode Name:返回文件的节点名;118、c vRead Int:读取一个无名称的整数型;119、cvRe adInt ByNam e:读取一个有名称的整数型;120、c vRead Real:读取一个无名称的浮点型;121、c vRead RealB yName:读取一个有名称的浮点型;122、cv ReadS tring:从文件节点中寻找字符串;123、cv ReadS tring ByNam e:找到一个有名称的文件节点并返回它;124、c vRead:将对象解码并返回它的指针;125、c vRead ByNam e:找到对象并解码;126、cvRea dRawD ata:读取多个数值;127、cvSt artRe adRaw Data:初始化文件节点序列的读取;128、cv ReadR awDat aSlic e:读取文件节点的内容;129、cvG etMod uleIn fo:检查IPP库是否已经正常安装并且检验运行是否正常;130、cv Resiz eWind ow:用来调整窗口的大小;131、cvSav eImag e:保存图像;132、cvM oveWi ndow:将窗口移动到其左上角为x,y的位置;133、cv Destr oyAll Windo w:用来关闭所有窗口并释放窗口相关的内存空间;134、cv GetTr ackba rPos:读取滑动条的值;135、cv SetTr ackba rPos:设置滑动条的值;136、cv GrabF rame:用于快速将视频帧读入内存;137、cv Retri eveFr ame:对读入帧做所有必须的处理;138、cvC onver tImag e:用于在常用的不同图像格式之间转换;139、c vErod e:形态腐蚀;140、cvD ilate:形态学膨胀;141、c vMorp holog yEx:更通用的形态学函数;142、c vFloo dFill:漫水填充算法,用来进一步控制哪些区域将被填充颜色;143、cvRe size:放大或缩小图像;144、cv PyrUp:图像金字塔,将现有的图像在每个维度上都放大两倍;145、cvPyr Segme ntati on:利用金字塔实现图像分割;146、cvThr eshol d:图像阈值化;147、cv Acc:可以将8位整数类型图像累加为浮点图像;148、cv Adapt iveTh resho ld:图像自适应阈值;149、cvFi lter2D:图像卷积;150、cvC opyMa keBor der:将特定的图像轻微变大,然后以各种方式自动填充图像边界;151、cvSo bel:图像边缘检测,Sobe l算子;152、c vLapl ace:拉普拉斯变换、图像边缘检测;153、cv Hough Lines2:霍夫直线变换;154、c vHoug hCirc les:霍夫圆变换;155、cvRem ap:图像重映射,校正标定图像,图像插值;156、cvWa rpAff ine:稠密仿射变换;157、cvGe tQuad rangl eSubP ix:仿射变换;158、cv GetAf fineT ransf orm:仿射映射矩阵的计算;159、c vClon eImag e:将整个IplIm age结构复制到新的IplIm age中;160、cv2DR otati onMat rix:仿射映射矩阵的计算;161、c vTran sform:稀疏仿射变换;162、cv WarpP erspe ctive:密集透视变换(单应性);163、cv GetPe rspec tiveT ransf orm:计算透视映射矩阵;164、cv Persp ectiv eTran sform:稀疏透视变换;165、cv CartT oPola r:将数值从笛卡尔空间到极坐标(极性空间)进行映射;166、cvPo larTo Cart:将数值从极性空间到笛卡尔空间进行映射;167、c vLogP olar:对数极坐标变换;168、cv DFT:离散傅里叶变换;169、cvM ulSpe ctrum s:频谱乘法;170、cvD CT:离散余弦变换;171、cvInt egral:计算积分图像;172、cv DistT ransf orm:图像的距离变换;173、cvE quali zeHis t:直方图均衡化;174、c vCrea teHis t:创建一新直方图;175、cvMak eHist Heade rForA rray:根据已给出的数据创建直方图;176、c vNorm alize Hist:归一化直方图;177、cvT hresh Hist:直方图阈值函数;178、cv CalcH ist:从图像中自动计算直方图;179、cvCo mpare Hist:用于对比两个直方图的相似度;180、c vCalc EMD2:陆地移动距离(EMD)算法;181、c vCalc BackP rojec t:反向投影;182、cvC alcBa ckPro jectP atch:图块的方向投影;183、cv Match Templ ate:模板匹配;184、c vCrea teMem Stora ge:用于创建一个内存存储器;185、cvCre ateSe q:创建序列;186、cvS eqInv ert:将序列进行逆序操作;187、c vCvtS eqToA rray:复制序列的全部或部分到一个连续内存数组中;188、cvFi ndCon tours:从二值图像中寻找轮廓;189、cvD rawCo ntour s:绘制轮廓;190、cvA pprox Poly:使用多边形逼近一个轮廓;191、cvC ontou rPeri meter:轮廓长度;192、cvCo ntour sMome nts:计算轮廓矩;193、cvMom ents:计算Hu不变矩;194、cv Match Shape s:使用矩进行匹配;195、cvIni tLine Itera tor:对任意直线上的像素进行采样;196、cv Sampl eLine:对直线采样;197、cvA bsDif f:帧差;198、cvWat ershe d:分水岭算法;199、cv Inpai nt:修补图像;200、cv GoodF eatur esToT rack:寻找角点;201、cvFin dCorn erSub Pix:用于发现亚像素精度的角点位置;202、c vCalc Optic alFlo wLK:实现非金字塔的Luca s-Kan ade稠密光流算法;203、cvMea nShif t:mea n-shi ft跟踪算法;204、cvC amShi ft:ca mshif t跟踪算法;205、cvCr eateK alman:创建Ka lman滤波器;206、cv Creat eConD ensat ion:创建cond ensat ion滤波器;207、cvC onver tPoin tsHom ogeni ous:对齐次坐标进行转换;208、c vFind Chess board Corne rs:定位棋盘角点;209、cvFin dHomo graph y:计算单应性矩阵;210、cvRod rigue s2:罗德里格斯变换;211、cvFi tLine:直线拟合算法;212、cv CalcC ovarM atrix:计算协方差矩阵;213、c vInve rt:计算协方差矩阵的逆矩阵;214、cvMah alano bis:计算Maha lanob is距离;215、cvKMe ans2:K均值;216、c vClon eMat:根据一个已有的矩阵创建一个新矩阵;217、cvP reCor nerDe tect:计算用于角点检测的特征图;218、cv GetIm age:C vMat图像数据格式转换成Ip lImag e图像数据格式;219、cv MatMu l:两矩阵相乘;。
opencv库常用函数

opencv库常⽤函数常⽤opencv函数:1、cv2.line():画线——参数依次为:图⽚路径,起点和终点坐标值,颜⾊(rgb),线条宽度(像素)2、dst = cvtColor(src,code,dst=None,dstCn=None):颜⾊空间转换函数——参数依次为(原图像,color转化代码,输出图像,输出通道), 返回转换后的图像3、ret, dst = cv2.threshold(src, thresh, maxval, type):固定阈值⼆值化——src:输⼊图,只能输⼊单通道图像,通常来说为灰度图dst:输出图thresh:阈值maxval:当像素值超过了阈值(或者⼩于阈值,根据type来决定),所赋予的值type:⼆值化操作的类型,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV; cv2.THRESH_TRUNC; cv2.THRESH_TOZERO;cv2.THRESH_TOZERO_INV4、cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]]) :查找检测物体的轮廓opencv2返回两个值:contours:hierarchy。
注:opencv3会返回三个值,分别是img, countours, hierarchy参数:第⼀个参数是寻找轮廓的图像;第⼆个参数表⽰轮廓的检索模式,有四种(本⽂介绍的都是新的cv2接⼝):cv2.RETR_EXTERNAL 表⽰只检测外轮廓cv2.RETR_LIST 检测的轮廓不建⽴等级关系cv2.RETR_CCOMP 建⽴两个等级的轮廓,上⾯的⼀层为外边界,⾥⾯的⼀层为内孔的边界信息。
如果内孔内还有⼀个连通物体,这个物体的边界也在顶层。
cv2.RETR_TREE 建⽴⼀个等级树结构的轮廓。
第三个参数method为轮廓的近似办法cv2.CHAIN_APPROX_NONE 存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1cv2.CHAIN_APPROX_SIMPLE 压缩⽔平⽅向,垂直⽅向,对⾓线⽅向的元素,只保留该⽅向的终点坐标,例如⼀个矩形轮廓只需4个点来保存轮廓信息cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS 使⽤teh-Chinl chain 近似算法返回值cv2.findContours()函数返回两个值,⼀个是轮廓本⾝,还有⼀个是每条轮廓对应的属性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
访问图像元素如下:1、针对各种图像(包括4-通道)和矩阵的函数(cvGet2D,cvSet2D),但是它们都很慢.(img->origin=IPL_ORIGIN_TL)或者是左下角(img->origin=IPL_ORIGIN_BL)假设有8-bit1-通道的图像I(IplImage*img):I(x,y)~((uchar*)(img->imageData+img->widthStep*y))[x]假设有8-bit3-通道的图像I(IplImage*img):I(x,y)blue~((uchar*)(img->imageData+img->widthStep*y))[x*3]I(x,y)green~((uchar*)(img->imageData+img->widthStep*y))[x*3+1]I(x,y)red~((uchar*)(img->imageData+img->widthStep*y))[x*3+2]如果增加点(100,100)的亮度30,那么可以:CvPoint pt={100,100};((uchar*)(img->imageData+img->widthStep*pt.y))[pt.x*3]+=30; ((uchar*)(img->imageData+img->widthStep*pt.y))[pt.x*3+1]+=30; ((uchar*)(img->imageData+img->widthStep*pt.y))[pt.x*3+2]+=30;CvPoint pt={100,100};uchar*temp_ptr=&((uchar*)(img->imageData+img->widthStep*pt.y))[x*3];temp_ptr[0]+=30;temp_ptr[1]+=30;temp_ptr[2]+=30;假设有32-bit浮点数,1-通道图像I(IplImage*img):I(x,y)~((float*)(img->imageData+img->widthStep*y))[x]现在,通用方法:假设有N-通道,类型为T的图像:I(x,y)c~((T*)(img->imageData+img->widthStep*y))[x*N+c]或者你可使用宏CV_IMAGE_ELEM(image_header,elemtype,y,x_Nc)I(x,y)c~CV_IMAGE_ELEM(img,T,y,x*N+c)2、访问矩阵元素设有32-bit浮点数的实数矩阵M(CvMat*mat):M(i,j)~((float*)(mat->data.ptr+mat->step*i))[j]设有64-bit浮点数的复数矩阵M(CvMat*mat):Re M(i,j)~((double*)(mat->data.ptr+mat->step*i))[j*2]Im M(i,j)~((double*)(mat->data.ptr+mat->step*i))[j*2+1]设有单通道矩阵,有宏CV_MAT_ELEM(matrix,elemtype,row,col),例如对32-bit浮点数的实数矩阵M(i,j)~CV_MAT_ELEM(mat,float,i,j),假如初始化3x3单位阵:CV_MAT_ELEM(mat,float,0,0)=1.f;CV_MAT_ELEM(mat,float,0,1)=0.f;CV_MAT_ELEM(mat,float,0,2)=0.f;CV_MAT_ELEM(mat,float,1,0)=0.f;CV_MAT_ELEM(mat,float,1,1)=1.f;CV_MAT_ELEM(mat,float,1,2)=0.f;CV_MAT_ELEM(mat,float,2,0)=0.f;CV_MAT_ELEM(mat,float,2,1)=0.f;CV_MAT_ELEM(mat,float,2,2)=1.f;3、处理独立的数据如300x20032-bit浮点数image/array,也就是对一个有60000个元素的数组.int cols=300,rows=200;float*myarr=new float[rows*cols];//step1)initializing CvMat headerCvMat mat=cvMat(rows,cols,CV_32FC1,//32-bit floating-point,single channel typemyarr//user data pointer(no data is copied));//step2)using cv functions,e.g.calculating l2(Frobenius)norm double norm=cvNorm(&mat,0,CV_L2);...delete myarr;其它情况在参考手册中有描述.见cvCreateMatHeader,cvInitMatHeader, cvCreateImageHeader,cvSetData etc.---------------------------------------------------------------------4、加载图像,显示/*usage:prog<image_name>*/#include"cv.h"#include"highgui.h"int main(int argc,char**argv){IplImage*img;if(argc==2&&(img=cvLoadImage(argv[1],1))!=0){cvNamedWindow("Image view",1);cvShowImage("Image view",img);cvWaitKey(0);//very important,contains event processing loop inside cvDestroyWindow("Image view");cvReleaseImage(&img);return0;}return-1;}void cvLaplace(IplImage*src,IplImage*dst,int apertureSize=3); void cvSobel(IplImage*src,IplImage*dst,int dx,int dy,int apertureSize=3);void cvCanny(IplImage*img,IplImage*edges,double lowThresh,double highThresh,int apertureSize=3);void cvPreCornerDetect(IplImage*img,IplImage*corners,Int apertureSize);void cvCornerEigenValsAndVecs(IplImage*img,IplImage*eigenvv,int blockSize,int apertureSize=3);void cvCornerMinEigenVal(IplImage*img,IplImage*eigenvv,int blockSize,int apertureSize=3);void cvGoodFeaturesToTrack(IplImage*image,IplImage*eigImage, IplImage*tempImage,CvPoint2D32f*corners,int*cornerCount,double qualityLevel,double minDistance);//对已经粗检测出的角点进行亚像素精准定位void cvFindCornerSubPix(IplImage*img,CvPoint2D32f*corners,int count,CvSize win,CvSize zeroZone,CvTermCriteria criteria);//金字塔分解与重构void cvPyrDown(IplImage*src,IplImage*dst,IplFilterfilter=IPL_GAUSSIAN_5x5);void cvPyrUp(IplImage*src,IplImage*dst,IplFilterfilter=IPL_GAUSSIAN_5x5);void cvThreshold(IplImage*src,IplImage*dst,float thresh,float maxvalue,CvThreshType type);void cvProject3D(CvPoint3D32f*points3D,int count,CvPoint2D32f* points2D,int xindx,int yindx);void cvFindFundamentalMatrix(int*points1,int*points2,int numpoints, int method,CvMatrix3*matrix);//很好用的平滑函数void cvSmooth(const CvArr*src,CvArr*dst,intsmoothtype=CV_GAUSSIAN,int param1=3,int param2=0,double param3=0); CV_BLUR_NO_SCALE CV_BLUR CV_GAUSSIAN CV_MEDIAN CV_BILATERAL其他辅助函数:void cvPutText(CvArr*img,const char*text,CvPoint org,const CvFont* font,CvScalar color);cvCvtColor(image,gray,CV_BGR2GRAY);//彩色图像灰度化cvCvtPlaneToPix(planes[0],planes[1],planes[2],0,currentimage); cvSplit(colorimage,plane[0],plane[1],plane[2],0);。