opencv库常用函数

  • 格式:pdf
  • 大小:143.65 KB
  • 文档页数:2

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_INV

4、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))==1

cv2.CHAIN_APPROX_SIMPLE 压缩⽔平⽅向,垂直⽅向,对⾓线⽅向的元素,只保留该⽅向的终点坐标,例如⼀个矩形轮廓只需4个点来保存轮廓信息

cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS 使⽤teh-Chinl chain 近似算法

返回值cv2.findContours()函数返回两个值,⼀个是轮廓本⾝,还有⼀个是每条轮廓对应的属性。

5、x,y,w,h = cv2.boundingRect(img):⽤⼀个最⼩的矩形,把找到的形状包起来

参数img是⼀个⼆值图;

返回四个值,分别是x,y,w,h;x,y是矩阵左上点的坐标,w,h是矩阵的宽和⾼

6、edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) : 边缘检测

必要参数:

第⼀个参数是需要处理的原图像,该图像必须为单通道的灰度图;

第⼆个参数是阈值1;

第三个参数是阈值2。

其中较⼤的阈值2⽤于检测图像中明显的边缘,但⼀般情况下检测的效果不会那么完美,边缘检测出来是断断续续的。所以这时候⽤较⼩的第⼀个阈值⽤于将这些间断的边缘连接起来。

可选参数中apertureSize就是Sobel算⼦的⼤⼩。⽽L2gradient参数是⼀个布尔值,如果为真,则使⽤更精确的L2范数进⾏计算(即两个⽅向的倒数的平⽅和再开放),否则使⽤L1范数

(直接将两个⽅向导数的绝对值相加)。

由于Canny只能处理灰度图,所以将读取的图像转成灰度图

7、cv2.getStructuringElement( ) :返回指定形状和尺⼨的结构元素。

这个函数的第⼀个参数表⽰内核的形状,有三种形状可以选择。

矩形:MORPH_RECT;

交叉形:MORPH_CROSS;

椭圆形:MORPH_ELLIPSE;

第⼆和第三个参数分别是内核的尺⼨以及锚点的位置。⼀般在调⽤erode以及dilate函数之前,先定义⼀个Mat类型的变量来获得getStructuringElement函数的返回值: 对于锚点的位置,有默认值Point(-1,-1),表⽰锚点位于中⼼点。element形状唯⼀依赖锚点位置,其他情况下,锚点只是影响了形态学运算结果的

偏移。

8、cv2.morphologyEx(src, op, kernel) :进⾏各类形态学的变化

参数说明:src传⼊的图⽚

op进⾏变化的⽅式

kernel表⽰⽅框的⼤⼩

op = cv2.MORPH_OPEN 进⾏开运算,指的是先进⾏腐蚀操作,再进⾏膨胀操作

op = cv2.MORPH_CLOSE 进⾏闭运算, 指的是先进⾏膨胀操作,再进⾏腐蚀操作

开运算:表⽰的是先进⾏腐蚀,再进⾏膨胀操作

闭运算:表⽰先进⾏膨胀操作,再进⾏腐蚀操作

9、cv2.contourArea(contour,oriented = False):此函数利⽤格林公式计算轮廓的⾯积。对于具有⾃交点的轮廓,该函数⼏乎肯定会给出错误的结果。

参数:contour:输⼊⼆维的向量,存储为vector(C++)或Mat。

oriented:有⽅向的区域标志:

true:此函数依赖轮廓的⽅向(顺时针或逆时针)返回⼀个已标记区域的值。

false:默认值。意味着返回不带⽅向的绝对值。

10、cv2.fillPoly(img,ppt,npt,1,Scalar(255,255,255),lineType):绘制多边形并对其填充

函数参数:img:多边形将被画到img上

ppt:多边形的顶点集为ppt

npt:绘制的多边形顶点数⽬为npt

要绘制的多边形数量为1Scalar:多边形的颜⾊定义为Scarlar(255,255,255),即RGB的值为⽩⾊

lineType:线型

11、cv2.polylines():⽤于绘制任何图像上的多边形。

⽤法: cv2.polylines(image, [pts], isClosed, color, thickness)

参数:image: 这是上圆要绘制的图像。

pts: 多边形曲⾏数组。

npts: 多边形顶点计数器阵列。

ncontours: 曲⾏数量。

isClosed: 指⽰绘制的折线是否闭合的标志。如果它们是闭合的,则该函数从每条曲线的最后⼀个顶点到其第⼀个顶点绘制⼀条线color: 这是折线的颜⾊来绘制。对于BGR,我们传递⼀个元组。

thickness: 它是折线边的厚度。

返回值:它返回⼀个图像。

12、cv2.imwrite(file,img,num):保存⼀个图像。

参数:第⼀个参数是要保存的⽂件名,第⼆个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表⽰的是图像的质量,⽤0 - 100的整数表⽰,默认95;对于png ,第三个参数表⽰的是压缩级别,默认为3。

注意:cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int

cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越⾼图像越⼩

13、cv2.imread(filepath,flags) :读⼊图像。

参数:这幅图像应该在此程序的⼯作路径,或者给函数提供完整路径,第⼆个参数是要告诉函数应该如何读取这幅图⽚,可省略。filepath:要读⼊图⽚的完整路径

flags:读⼊图⽚的标志

cv2.IMREAD_COLOR:默认参数,读⼊⼀副彩⾊图⽚,忽略alpha通道

cv2.IMREAD_GRAYSCALE:读⼊灰度图⽚

cv2.IMREAD_UNCHANGED:顾名思义,读⼊完整图⽚,包括alpha通道

14、cv2.imshow(wname,img):显⽰图像

参数:第⼀个参数是显⽰图像的窗⼝的名字,第⼆个参数是要显⽰的图像(imread读⼊的图像),窗⼝⼤⼩⾃动调整为图⽚⼤⼩。cv2.waitKey顾名思义等待键盘输⼊,单位为毫秒,即等待指定的毫秒数看是否有键盘输⼊,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运⾏。若没有按下任何键,超时

后返回-1。参数为0表⽰⽆限等待。不调⽤waitKey的话,窗⼝会⼀闪⽽逝,看不到显⽰的图⽚。cv2.destroyAllWindow()销毁所有窗⼝

cv2.destroyWindow(wname)销毁指定窗⼝