opencv应用函数

合集下载

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`。

opencvresize函数作用

opencvresize函数作用

opencvresize函数作用OpenCV中的resize函数是用于调整图像大小的函数。

它可以通过指定目标图像大小或尺度因子来对图像进行缩放操作。

resize函数可以按照不同的插值方法进行图像的缩放,并可以实现图像的放大、缩小、裁剪等功能。

以下是resize函数的一些主要作用和使用场景:1.图像缩放:resize函数可以根据指定的目标图像大小来调整原图像的尺寸。

通过指定目标图像的宽度和高度,可以将图像拉伸或压缩到指定的大小。

例如,当需要将一张400x300的图像缩放为200x150大小时,可以使用resize函数实现。

2.图像放大和缩小:resize函数可以根据缩放因子来对图像进行放大或缩小操作。

通过指定一个小于1的缩放因子,可以将图像缩小;通过指定一个大于1的缩放因子,可以将图像放大。

这在实际应用中经常用于调整图像的大小以适应不同的显示设备或处理需求。

3.图像裁剪:resize函数还可以通过调整源图像和目标图像的ROI(Region of Interest,感兴趣区域)来实现图像的裁剪。

通过指定源图像的感兴趣区域以及目标图像的大小,可以从源图像中剪切出指定大小的图像。

4.插值方法:resize函数提供了多种插值方法,用于在图像缩放过程中对像素进行估计和计算。

常见的插值方法包括最邻近插值、双线性插值和双三次插值。

最邻近插值方法通过选择最近邻像素的值来进行像素估计,速度较快但可能引起图像锯齿现象;双线性插值方法通过对最邻近的四个像素进行加权平均来进行像素估计,能够消除锯齿但会引起图像模糊;双三次插值方法通过对最邻近的16个像素进行加权平均进行像素估计,能够产生更平滑的图像但计算量较大。

5.图像变形:除了简单的缩放和裁剪,resize函数还可以用于对图像进行更复杂的变形操作。

通过指定目标图像的大小和插值方法,可以实现图像的旋转、扭曲、镜像等变形效果。

总结:resize函数是OpenCV中用于调整图像大小的函数,它可以实现图像的缩放、放大、缩小、裁剪等操作。

Opencv中函数的用法

Opencv中函数的用法

1、cvLoadImage:将图像文件加载至内存;2、cvNamedWindow:在屏幕上创建一个窗口;3、cvShowImage:在一个已创建好的窗口中显示图像;4、cvWaitKey:使程序暂停,等待用户触发一个按键操作;5、cvReleaseImage:释放图像文件所分配的内存;6、cvDestroyWindow:销毁显示图像文件的窗口;7、cvCreateFileCapture:通过参数设置确定要读入的AVI文件;8、cvQueryFrame:用来将下一帧视频文件载入内存;9、cvReleaseCapture:释放CvCapture结构开辟的内存空间;10、cvCreateTrackbar:创建一个滚动条;11、cvSetCaptureProperty:设置CvCapture对象的各种属性;12、cvGetCaptureProperty:查询CvCapture对象的各种属性;13、cvGetSize:当前图像结构的大小;14、cvSmooth:对图像进行平滑处理;15、cvPyrDown:图像金字塔,降采样,图像缩小为原来四分之一;16、cvCanny:Canny边缘检测;17、cvCreateCameraCapture:从摄像设备中读入数据;18、cvCreateVideoWriter:创建一个写入设备以便逐帧将视频流写入视频文件;搜索19、cvWriteFrame:逐帧将视频流写入文件;20、cvReleaseVideoWriter:释放CvVideoWriter结构开辟的内存空间;21、CV_MAT_ELEM:从矩阵中得到一个元素;22、cvAbs:计算数组中所有元素的绝对值;23、cvAbsDiff:计算两个数组差值的绝对值;24、cvAbsDiffS:计算数组和标量差值的绝对值;25、cvAdd:两个数组的元素级的加运算;26、cvAddS:一个数组和一个标量的元素级的相加运算;27、cvAddWeighted:两个数组的元素级的加权相加运算(alpha运算);28、cvAvg:计算数组中所有元素的平均值;29、cvAvgSdv:计算数组中所有元素的绝对值和标准差;30、cvCalcCovarMatrix:计算一组n维空间向量的协方差;31、cvCmp:对两个数组中的所有元素运用设置的比较操作;32、cvCmpS:对数组和标量运用设置的比较操作;33、cvConvertScale:用可选的缩放值转换数组元素类型;34、cvCopy:把数组中的值复制到另一个数组中;35、cvCountNonZero:计算数组中非0值的个数;36、cvCrossProduct:计算两个三维向量的向量积(叉积);37、cvCvtColor:将数组的通道从一个颜色空间转换另外一个颜色空间;38、cvDet:计算方阵的行列式;39、cvDiv:用另外一个数组对一个数组进行元素级的除法运算;40、cvDotProduct:计算两个向量的点积;41、cvEigenVV:计算方阵的特征值和特征向量;42、cvFlip:围绕选定轴翻转;43、cvGEMM:矩阵乘法;44、cvGetCol:从一个数组的列中复制元素;45、cvGetCols:从数据的相邻的多列中复制元素;46、cvGetDiag:复制数组中对角线上的所有元素;47、cvGetDims:返回数组的维数;48、cvGetDimSize:返回一个数组的所有维的大小;49、cvGetRow:从一个数组的行中复制元素值;50、cvGetRows:从一个数组的多个相邻的行中复制元素值;51、cvGetSize:得到二维的数组的尺寸,以CvSize返回;52、cvGetSubRect:从一个数组的子区域复制元素值;53、cvInRange:检查一个数组的元素是否在另外两个数组中的值的范围内;54、cvInRangeS:检查一个数组的元素的值是否在另外两个标量的范围内;55、cvInvert:求矩阵的逆;56、cvMahalonobis:计算两个向量间的马氏距离;57、cvMax:在两个数组中进行元素级的取最大值操作;58、cvMaxS:在一个数组和一个标量中进行元素级的取最大值操作;59、cvMerge:把几个单通道图像合并为一个多通道图像;60、cvMin:在两个数组中进行元素级的取最小值操作;61、cvMinS:在一个数组和一个标量中进行元素级的取最小值操作;62、cvMinMaxLoc:寻找数组中的最大最小值;63、cvMul:计算两个数组的元素级的乘积(点乘);64、cvNot:按位对数组中的每一个元素求反;65、cvNormalize:将数组中元素进行归一化;66、cvOr:对两个数组进行按位或操作;67、cvOrs:在数组与标量之间进行按位或操作;68、cvReduce:通过给定的操作符将二维数组简为向量;69、cvRepeat:以平铺的方式进行数组复制;70、cvSet:用给定值初始化数组;71、cvSetZero:将数组中所有元素初始化为0;72、cvSetIdentity:将数组中对角线上的元素设为1,其他置0;73、cvSolve:求出线性方程组的解;74、cvSplit:将多通道数组分割成多个单通道数组;75、cvSub:两个数组元素级的相减;76、cvSubS:元素级的从数组中减去标量;77、cvSubRS:元素级的从标量中减去数组;78、cvSum:对数组中的所有元素求和;79、cvSVD:二维矩阵的奇异值分解;80、cvSVBkSb:奇异值回代计算;81、cvTrace:计算矩阵迹;82、cvTranspose:矩阵的转置运算;83、cvXor:对两个数组进行按位异或操作;84、cvXorS:在数组和标量之间进行按位异或操作;85、cvZero:将所有数组中的元素置为0;86、cvConvertScaleAbs:计算可选的缩放值的绝对值之后再转换数组元素的类型;87、cvNorm:计算数组的绝对范数,绝对差分范数或者相对差分范数;88、cvAnd:对两个数组进行按位与操作;89、cvAndS:在数组和标量之间进行按位与操作;90、cvScale:是cvConvertScale的一个宏,可以用来重新调整数组的内容,并且可以将参数从一种数据类型转换为另一种;91、cvT:是函数cvTranspose的缩写;92、cvLine:画直线;93、cvRectangle:画矩形;94、cvCircle:画圆;95、cvEllipse:画椭圆;96、cvEllipseBox:使用外接矩形描述椭圆;97、cvFillPoly、cvFillConvexPoly、cvPolyLine:画多边形;98、cvPutText:在图像上输出一些文本;99、cvInitFont:采用一组参数配置一些用于屏幕输出的基本个特定字体;100、cvSave:矩阵保存;101、cvLoad:矩阵读取;102、cvOpenFileStorage:为读/写打开存储文件;103、cvReleaseFileStorage:释放存储的数据;104、cvStartWriteStruct:开始写入新的数据结构;105、cvEndWriteStruct:结束写入数据结构;106、cvWriteInt:写入整数型;107、cvWriteReal:写入浮点型;108、cvWriteString:写入字符型;109、cvWriteComment:写一个XML或YAML的注释字串;110、cvWrite:写一个对象;111、cvWriteRawData:写入多个数值;112、cvWriteFileNode:将文件节点写入另一个文件存储器;113、cvGetRootFileNode:获取存储器最顶层的节点;114、cvGetFileNodeByName:在映图或存储器中找到相应节点;115、cvGetHashedKey:为名称返回一个惟一的指针;116、cvGetFileNode:在映图或文件存储器中找到节点;117、cvGetFileNodeName:返回文件的节点名;118、cvReadInt:读取一个无名称的整数型;119、cvReadIntByName:读取一个有名称的整数型;120、cvReadReal:读取一个无名称的浮点型;121、cvReadRealByName:读取一个有名称的浮点型;122、cvReadString:从文件节点中寻找字符串;123、cvReadStringByName:找到一个有名称的文件节点并返回它;124、cvRead:将对象解码并返回它的指针;125、cvReadByName:找到对象并解码;126、cvReadRawData:读取多个数值;127、cvStartReadRawData:初始化文件节点序列的读取;128、cvReadRawDataSlice:读取文件节点的内容;129、cvGetModuleInfo:检查IPP库是否已经正常安装并且检验运行是否正常;130、cvResizeWindow:用来调整窗口的大小;131、cvSaveImage:保存图像;132、cvMoveWindow:将窗口移动到其左上角为x,y的位置;133、cvDestroyAllWindow:用来关闭所有窗口并释放窗口相关的内存空间;134、cvGetTrackbarPos:读取滑动条的值;135、cvSetTrackbarPos:设置滑动条的值;136、cvGrabFrame:用于快速将视频帧读入内存;137、cvRetrieveFrame:对读入帧做所有必须的处理;138、cvConvertImage:用于在常用的不同图像格式之间转换;139、cvErode:形态腐蚀;140、cvDilate:形态学膨胀;141、cvMorphologyEx:更通用的形态学函数;142、cvFloodFill:漫水填充算法,用来进一步控制哪些区域将被填充颜色;143、cvResize:放大或缩小图像;144、cvPyrUp:图像金字塔,将现有的图像在每个维度上都放大两倍;145、cvPyrSegmentation:利用金字塔实现图像分割;146、cvThreshold:图像阈值化;147、cvAcc:可以将8位整数类型图像累加为浮点图像;148、cvAdaptiveThreshold:图像自适应阈值;149、cvFilter2D:图像卷积;150、cvCopyMakeBorder:将特定的图像轻微变大,然后以各种方式自动填充图像边界;151、cvSobel:图像边缘检测,Sobel算子;152、cvLaplace:拉普拉斯变换、图像边缘检测;。

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库函数

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()函数用于对图像进行边缘检测,可以指定边缘检测的参数和阈值。

边缘检测是图像处理和计算机视觉任务中常用的操作,可以用于检测图像中的边缘和轮廓,提取图像的关键信息。

python中opencv的用法

python中opencv的用法

python中opencv的用法
OpenCV 是一个开源的计算机视觉库,广泛应用于图像处理、视频分析、人脸识别等领域。

在 Python 中使用 OpenCV,可以通过以下步骤进行:
1. 安装 OpenCV:首先需要在系统中安装 OpenCV。

可以使用 pip 命令进行安装,例如:
```
pip install opencv-python
```
2. 导入 OpenCV 模块:在 Python 代码中,可以使用以下语句导入 OpenCV 模块:
```python
import cv2
```
3. 加载图像:OpenCV 提供了多种加载图像的方法,其中最常用的是使用 cv2.imread()函数。

该函数接受一个字符串参数,表示图像的路径,并返回一个代表图像的矩阵。

```python
image = cv2.imread('image.jpg')
```
4. 操作图像:OpenCV 提供了丰富的图像操作函数,例如:
- 改变图像大小:使用 cv2.resize()函数。

- 翻转图像:使用 cv2.flip()函数。

- 旋转图像:使用 cv2.rotate()函数。

- 提取图像特征:使用 cv2.Canny()函数。

5. 保存图像:使用 cv2.imwrite()函数可以将图像保存到文件中。

以上是 OpenCV 在 Python 中的基本用法,你可以根据实际需求进一步学习和使用OpenCV 中的其他函数。

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()函数返回两个值,⼀个是轮廓本⾝,还有⼀个是每条轮廓对应的属性。

OPENCV库函数使用说明

OPENCV库函数使用说明
一、cv::Mat类介绍
cv::Mat类是OpenCV中最核心的基本数据结构,抽象代表一个n维矩阵,矩阵元素的矩阵可以是单通道浮点数,向量,多通道,可以是无符号字节,单精度浮点数以及双精度浮点数,并且支持多通道数据。

Mat类通过长度和宽度确定矩阵的大小,通过depth(函数可以得到它的深度,深度表示分量的类型。

Mat矩阵分为三种:关键的类型,普通的类型,宽字节类型,关键类型是由C++11语言提供的,主要用于简化mat 和其他类型的交互,它的性能比普通类型更好,但不支持所有类型;普通类型可以实现所有的功能,但是性能比关键类型要差;宽字节类型是在普通类型的基础上,支持访问1(uchar),2(ushort),4(uint)个字节长度的数据,它的性能比普通类型好。

二、cv::Mat函数使用
1.Mat类结构函数
一般来说,Mat类的结构函数主要有两种,分别是Mat()和Mat ({}),当我们只想创建一个空的Mat类时,可以使用Mat(),当想要创建一个8位单通道矩阵时,可以使用Mat({})。

2.Mat常用成员函数
(1)ptr():返回一个指向矩阵数据的指针;
(2)row():返回行数;
(3)cols():返回列数;。

opencv用于绘制椭圆的函数

opencv用于绘制椭圆的函数使用OpenCV绘制椭圆的函数是cv2.ellipse()。

这个函数可以在图像上绘制椭圆,可以指定椭圆的中心位置、长轴和短轴的长度、旋转角度以及椭圆弧的起始角度和结束角度。

在使用cv2.ellipse()函数之前,我们需要先创建一个空白的图像,然后再在这个图像上绘制椭圆。

下面是一个使用cv2.ellipse()函数绘制椭圆的示例代码:```pythonimport cv2import numpy as np# 创建一个空白图像img = np.zeros((512, 512, 3), np.uint8)# 指定椭圆的参数center = (256, 256)axes = (100, 200)angle = 30startAngle = 0endAngle = 360# 在图像上绘制椭圆cv2.ellipse(img, center, axes, angle, startAngle, endAngle, (0, 0, 255), 2)# 显示图像cv2.imshow('Ellipse', img)cv2.waitKey(0)cv2.destroyAllWindows()```在这个示例中,我们首先创建了一个大小为512x512的空白图像。

然后指定了椭圆的中心位置为(256, 256),长轴长度为100,短轴长度为200,旋转角度为30度,起始角度为0度,结束角度为360度。

最后调用cv2.ellipse()函数在图像上绘制了这个椭圆,并设置椭圆的颜色为红色,线宽为2。

最后使用cv2.imshow()函数显示绘制后的图像。

除了绘制椭圆,cv2.ellipse()函数还可以绘制椭圆弧。

如果我们将起始角度和结束角度设置为非0和360,就可以绘制一个椭圆的弧段。

下面是一个示例代码:```pythonimport cv2import numpy as np# 创建一个空白图像img = np.zeros((512, 512, 3), np.uint8)# 指定椭圆的参数center = (256, 256)axes = (100, 200)angle = 30startAngle = 0endAngle = 180# 在图像上绘制椭圆弧cv2.ellipse(img, center, axes, angle, startAngle, endAngle, (0, 0, 255), 2)# 显示图像cv2.imshow('Ellipse Arc', img)cv2.waitKey(0)cv2.destroyAllWindows()```在这个示例中,我们将结束角度设置为180度,这样就绘制了一个半圆形的椭圆弧。

opencv mean函数

OpenCV中的mean函数定义cv2.mean()是OpenCV库中的一个函数,用于计算数组或图像的均值。

mean(src[, mask]) -> retval•src:输入数组或图像。

•mask:可选参数,指定要计算均值的区域。

它必须具有与src相同的尺寸,并且为8位单通道图像(可以是二进制掩码)。

如果没有提供mask,则将对整个src进行计算。

•retval:返回一个包含通道均值的浮点数数组。

用途mean函数主要用于计算图像或数组的均值。

在图像处理和计算机视觉领域中,均值是一种常见的统计量,它可以提供关于数据集中心位置的信息。

通过计算均值,我们可以了解数据集中所有像素或元素的平均值,从而获得更好的理解和分析数据集。

在实际应用中,mean函数常用于以下几个方面:1. 图像处理在图像处理过程中,我们经常需要对图像进行平滑处理、降噪等操作。

mean函数可以帮助我们快速计算出图像各个区域(全局或局部)的均值,并根据这些均值来调整图像亮度、对比度等属性。

例如,在直方图均衡化算法中,我们需要计算图像的均值来进行亮度调整。

2. 图像分割图像分割是将图像划分为具有不同属性或特征的区域的过程。

mean函数可以用于计算图像区域的均值,从而帮助我们识别和分割出具有相似颜色或纹理特征的区域。

例如,在基于阈值的图像分割中,我们可以通过计算每个区域的均值来确定合适的阈值。

3. 特征提取在计算机视觉任务中,特征提取是一项重要任务。

mean函数可以用于计算图像或数组中某个区域的均值,并作为一个特征进行后续处理。

例如,在人脸识别任务中,我们可以计算人脸图像某个区域(如眼睛、鼻子等)的均值作为一个特征向量。

4. 数组操作除了处理图像外,mean函数还可以用于对数组进行统计操作。

例如,在数字信号处理中,我们可以使用mean函数来计算音频信号或时间序列数据的均值。

工作方式mean函数根据输入参数src和mask来计算均值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录1 一、简介1.1 1、OpenCV的特点1.1.1 (1)总体描述1.1.2 (2)功能1.1.3 (3)OpenCV模块1.2 2、有用的学习资源1.2.1 (1)参考手册:1.2.2 (2)网络资源:1.2.3 (3)书籍:1.2.4 (4)视频处理例程(在<opencv-root>/samples/c/):1.2.5 (5)图像处理例程(在<opencv-root>/samples/c/): 1.3 3、OpenCV 命名规则1.3.1 (1)函数名:1.3.2 (2)矩阵数据类型:1.3.3 (3)图像数据类型:1.3.4 (4)头文件:1.4 4、编译建议1.4.1 (1)Linux:1.4.2 (2)Windows:1.5 5、C例程2 二、GUI 指令2.1 1、窗口管理2.1.1 (1)创建和定位一个新窗口:2.1.2 (2)载入图像:2.1.3 (3)显示图像:2.1.4 (4)关闭窗口:2.1.5 (5)改变窗口大小:2.2 2、输入处理2.2.1 (1)处理鼠标事件:2.2.2 (2)处理键盘事件:2.2.3 (3)处理滑动条事件:3 三、OpenCV的基本数据结构3.1 1、图像数据结构3.1.1 (1)IPL 图像:3.2 2、矩阵与向量3.2.1 (1)矩阵:3.2.2 (2)一般矩阵:3.2.3 (3)标量:3.3 3、其它结构类型3.3.1 (1)点:3.3.2 (2)矩形框大小(以像素为精度):3.3.3 (3)矩形框的偏置和大小:4 四、图像处理4.1 1、图像的内存分配与释放4.1.1 (1)分配内存给一幅新图像:4.1.2 (2)释放图像:4.1.3 (3)复制图像:4.1.4 (4)设置/获取感兴趣区域ROI:4.1.5 (5)设置/获取感兴趣通道COI:4.2 2、图像读写4.2.1 (1)从文件中读入图像:4.2.2 (2)保存图像:4.3 3、访问图像像素4.3.1 (1)假设你要访问第k通道、第i行、第j列的像素。

4.3.2 (2)间接访问: (通用,但效率低,可访问任意格式的图像)4.3.3 (3)直接访问: (效率高,但容易出错)4.3.4 (4)基于指针的直接访问: (简单高效)4.3.5 (5)基于c++ wrapper 的直接访问: (更简单高效)4.4 4、图像转换4.4.1 (1)字节型图像的灰度-彩色转换:4.4.2 (2)彩色图像->灰度图像:4.4.3 (3)不同彩色空间之间的转换:4.5 5、绘图指令4.5.1 (1)绘制矩形:4.5.2 (2)绘制圆形:4.5.3 (3)绘制线段:4.5.4 (4)绘制一组线段:4.5.5 (5)绘制一组填充颜色的多边形:4.5.6 (6)文本标注:5 五、矩阵处理5.1 1、矩阵的内存分配与释放5.1.1 (1)总体上:5.1.2 (2)为新矩阵分配内存:5.1.3 (3)释放矩阵内存:5.1.4 (4)复制矩阵:5.1.5 (5)初始化矩阵:5.1.6 (6)初始化矩阵为单位矩阵:5.2 2、访问矩阵元素5.2.1 (1)假设需要访问一个2D浮点型矩阵的第(i, j)个单元.5.2.2 (2)间接访问:5.2.3 (3)直接访问(假设矩阵数据按4字节行对齐):5.2.4 (4)直接访问(当数据的行对齐可能存在间隙时possible alignment gaps):5.2.5 (5)对于初始化后的矩阵进行直接访问:5.3 3、矩阵/向量运算5.3.1 (1)矩阵之间的运算:5.3.2 (2)矩阵之间的元素级运算:5.3.3 (3)向量乘积:5.3.4 (4)单一矩阵的运算:5.3.5 (5)非齐次线性方程求解:5.3.6 (6)特征值与特征向量(矩阵为方阵):6 六、视频处理6.1 1、从视频流中捕捉一帧画面6.1.1 (1)OpenCV 支持从摄像头或视频文件(AVI格式)中捕捉帧画面.6.1.2 (2)初始化一个摄像头捕捉器:6.1.3 (3)初始化一个视频文件捕捉器:6.1.4 (4)捕捉一帧画面:6.1.5 (5)释放视频流捕捉器:6.2 2、获取/设置视频流信息6.2.1 (1)获取视频流设备信息:6.2.2 (2)获取帧图信息:6.2.3 (3)设置从视频文件抓取的第一帧画面的位置:6.3 3、保存视频文件6.3.1 (1)初始化视频编写器:6.3.2 (2)保持视频文件:6.3.3 (3)释放视频编写器:[编辑]一、简介[编辑]1、OpenCV的特点(1)总体描述▪OpenCV是一个基于C/C++语言的开源图像处理函数库▪其代码都经过优化,可用于实时处理图像▪具有良好的可移植性▪可以进行图像/视频载入、保存和采集的常规操作▪具有低级和高级的应用程序接口(API)▪提供了面向Intel IPP高效多媒体函数库的接口,可针对你使用的Intel CPU优化代码,提高程序性能(译注:OpenCV 2.0版的代码已显着优化,无需IPP来提升性能,故2.0版不再提供IPP接口)(2)功能▪图像数据操作(内存分配与释放,图像复制、设定和转换)Image data manipulation (allocation, release, copying, setting, conversion).▪图像/视频的输入输出(支持文件或摄像头的输入,图像/视频文件的输出)Image and video I/O (file and camera based input, image/video file output).▪矩阵/向量数据操作及线性代数运算(矩阵乘积、矩阵方程求解、特征值、奇异值分解)Matrix and vector manipulation and linear algebra routines (products, solvers, eigenvalues, SVD).▪支持多种动态数据结构(链表、队列、数据集、树、图)Various dynamic data structures (lists, queues, sets, trees, graphs).▪基本图像处理(去噪、边缘检测、角点检测、采样与插值、色彩变换、形态学处理、直方图、图像金字塔结构)Basic image processing (filtering, edge detection, corner detection, sampling and interpolation, color conversion, morphological operations, histograms, image pyramids).▪结构分析(连通域/分支、轮廓处理、距离转换、图像矩、模板匹配、霍夫变换、多项式逼近、曲线拟合、椭圆拟合、狄劳尼三角化)Structural analysis (connected components, contour processing, distance transform, various moments, template matching, Hough transform, polygonal approximation, line fitting, ellipse fitting, Delaunay triangulation).▪摄像头定标(寻找和跟踪定标模式、参数定标、基本矩阵估计、单应矩阵估计、立体视觉匹配)Camera calibration (finding and tracking calibration patterns, calibration, fundamental matrix estimation, homography estimation, stereo correspondence).▪运动分析(光流、动作分割、目标跟踪)Motion analysis (optical flow, motion segmentation, tracking).▪目标识别(特征方法、HMM模型)Object recognition (eigen-methods, HMM).▪基本的GUI(显示图像/视频、键盘/鼠标操作、滑动条)Basic GUI (display image/video, keyboard and mouse handling, scroll-bars).▪图像标注(直线、曲线、多边形、文本标注)Image labeling (line, conic, polygon, text drawing)(3)OpenCV模块▪cv –核心函数库▪cvaux –辅助函数库▪cxcore –数据结构与线性代数库▪highgui – GUI函数库▪ml –机器学习函数库2、有用的学习资源[编辑](1)参考手册:▪<opencv-root>/docs/index.htm (译注:在你的OpenCV安装目录<opencv-root>内)[编辑](2)网络资源:▪官方网站: /technology/computing/opencv/▪软件下载: /projects/opencvlibrary/[编辑](3)书籍:▪Open Source Computer Vision Libraryby Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006). chenyusiyuan: 补充以下书籍▪Learning OpenCV - Computer Vision with the OpenCV Libraryby Gary Bradski & Adrian Kaehler, O'Reilly Media, 1 st ed. (September, 2008).▪OpenCV教程——基础篇作者:刘瑞祯于仕琪,北京航空航天大学出版社,出版日期:200706[编辑](4)视频处理例程(在<opencv-root>/samples/c/):▪颜色跟踪: camshiftdemo▪点跟踪: lkdemo▪动作分割: motempl▪边缘检测: laplace[编辑](5)图像处理例程(在<opencv-root>/samples/c/):▪边缘检测: edge▪图像分割: pyramid_segmentation▪形态学: morphology▪直方图: demhist▪距离变换: distrans▪椭圆拟合: fitellipse[编辑]3、OpenCV 命名规则[编辑](1)函数名:cvActionTargetMod(...)Action = 核心功能(core functionality)(e.g. set, create)Target = 目标图像区域(target image area)(e.g. contour, polygon)Mod = (可选的)调整语(optional modifiers)(e.g. argument type)[编辑](2)矩阵数据类型:CV_<bit_depth>(S|U|F)C<number_of_channels>S = 符号整型U = 无符号整型F = 浮点型E.g.: CV_8UC1 是指一个8位无符号整型单通道矩阵,CV_32FC2是指一个32位浮点型双通道矩阵.[编辑](3)图像数据类型:IPL_DEPTH_<bit_depth>(S|U|F)E.g.: IPL_DEPTH_8U 图像像素数据是8位无符号整型.IPL_DEPTH_32F图像像素数据是32位浮点型.[编辑](4)头文件:#include <cv.h>#include <cvaux.h>#include <highgui.h>#include <ml.h>#include <cxcore.h> // 一般不需要,cv.h 内已包含该头文件[编辑]4、编译建议[编辑](1)Linux:g++ hello-world.cpp-o hello-world \-I /usr/local/include/opencv -L /usr/local/lib \-lm -lcv -lhighgui -lcvaux[编辑](2)Windows:在Visual Studio的‘选项’和‘项目’中设置好OpenCV相关文件的路径。

相关文档
最新文档