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、StructuringElement( ) :返回指定形状和尺⼨的结构元素。
这个函数的第⼀个参数表⽰内核的形状,有三种形状可以选择。
矩形:MORPH_RECT;
交叉形:MORPH_CROSS;
椭圆形:MORPH_ELLIPSE;
第⼆和第三个参数分别是内核的尺⼨以及锚点的位置。⼀般在调⽤erode以及dilate函数之前,先定义⼀个Mat类型的变量来获得
getStructuringElement函数的返回值: 对于锚点的位置,有默认值Point(-1,-1),表⽰锚点位于中⼼点。element形状唯⼀依赖锚点位置,其他情况下,锚点只是影响了形态学运算结果的偏移。
8、phologyEx(src, op, kernel) :进⾏各类形态学的变化
参数说明:
src传⼊的图⽚
op进⾏变化的⽅式
kernel表⽰⽅框的⼤⼩
op =  cv2.MORPH_OPEN 进⾏开运算,指的是先进⾏腐蚀操作,再进⾏膨胀操作
op = cv2.MORPH_CLOSE 进⾏闭运算,指的是先进⾏膨胀操作,再进⾏腐蚀操作
开运算:表⽰的是先进⾏腐蚀,再进⾏膨胀操作
闭运算:表⽰先进⾏膨胀操作,再进⾏腐蚀操作
9、urArea(contour,oriented = False):此函数利⽤格林公式计算轮廓的⾯积。对于具有⾃交点的轮廓,该函数⼏乎肯定会给出错误的结果。
参数:
trunc函数excontour:输⼊⼆维的向量,存储为vector(C++)或Mat。
oriented:有⽅向的区域标志:
true:此函数依赖轮廓的⽅向(顺时针或逆时针)返回⼀个已标记区域的值。
false:默认值。意味着返回不带⽅向的绝对值。
10、cv2.fillPoly(img,ppt,npt,1,Scalar(255,255,255),lineType):绘制多边形并对其填充
函数参数:
img:多边形将被画到img上
ppt:多边形的顶点集为ppt
npt:绘制的多边形顶点数⽬为npt
要绘制的多边形数量为1
Scalar:多边形的颜⾊定义为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)销毁指定窗⼝

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。