赞
踩
在一幅图像中寻找与给定模板最匹配的区域。
在输入图像上滑动模板图像,并计算每个位置的匹配程度。匹配程度由所选的匹配方法决定。返回一个二维数组,数组的元素值表示模版在原图中每个区域的匹配程度。
matchTemplate(image, templ, method)
image:原图;templ:用于查找的模版;method:匹配方法,指定匹配模板的算法。
1.cv2.TM_SQDIFF:平方差匹配
算法:计算输入图像和模板之间的每个像素差的平方。
结果:值越小,匹配程度越高。
2. cv2.TM_SQDIFF_NORMED:标准化平方差匹配
算法:计算输入图像和模板之间的标准化平方差。
结果:值越小,匹配程度越高。
3.cv2.TM_CCORR:相关性匹配
算法:计算输入图像和模板之间的相关性(相似度)。
结果:值越大,匹配程度越高。
4.cv2.TM_CCORR_NORMED:标准化相关性匹配
算法:计算输入图像和模板之间的标准化相关性。
结果:值越大,匹配程度越高。
5. cv2.TM_CCOEFF:相关系数匹配
算法:计算输入图像和模板之间的相关系数(相似度)。
结果:值越大,匹配程度越高。
6.cv2.TM_CCOEFF_NORMED:标准化相关系数匹配
算法:计算输入图像和模板之间的标准化相关系数。
结果:值越大,匹配程度越高。
contours,hierarchy=CV2.findContours(image, mode, method)
返回一个二元组(contours,hierarchy):contours:检测到的轮廓列表,每个轮廓是一个numpy数组;hierarchy:轮廓的层次信息。
参数:
image:需要检测轮廓的图。必须是个经过二值化处理的灰度图像;mode:轮廓检索模式。
#轮廓检索模式
cv2.RETR_EXTERNAL:只检索最外层的轮廓。
cv2.RETR_LIST:检索所有的轮廓并存储在列表中。
cv2.RETR_CCOMP:检索所有轮廓并组织为两级结构(外层和内层)。
cv2.RETR_TREE:检索所有轮廓并构建轮廓的完整层次结构树。
#轮廓逼近方法
cv2.CHAIN_APPROX_NONE:存储所有的轮廓点。
cv2.CHAIN_APPROX_SIMPLE:压缩水平、垂直和对角线方向的轮廓,只保留重要的轮廓点。
cv2.CHAIN_APPROX_TC89_L1、cv2.CHAIN_APPROX_TC89_KCOS:使用 Teh-Chin 链逼近算法,通常不需要使用这两个方法。
drawContours(image, contours, contourIdx, color[, thickness][, lineType][, hierarchy][, maxLevel][, offset])
参数:
image:需要绘制轮廓的图,直接在原图上绘制(同时也是返回值)。可以是彩色图。
contours:轮廓数组列表。由findContours()返回的值。
contoursIdx:要绘制轮廓的索引。负数表示绘制所有轮廓。
color:轮廓线颜色。BGR三元组。
hierarchy:轮廓的层次关系。由findContours()返回的值。
maxLevel:要绘制的轮廓的最大层次,默认为0,表示绘制所有层次的轮廓。
offset:轮廓的偏移量。
▲若背景为白色,则整个背景也会被算作轮廓。
包围图像轮廓的最小边界。
boundingRect(array)
参数array:轮廓数组。
返回一个四元组(x,y,w,h),分别代表包围框的左上角x、y坐标以及宽和高。
minEnclosingCircle(points)
参数points:轮廓数组。
返回一个二元组(center,radius),分别表示圆心坐标 (x,y) 和半径 r (都是浮点数)。
convexHull(points ,clockwise=False ,returnPoints=True)
即凸多边形包围框。
参数:
clockwise:True表示返回的点按顺时针排列,False表示逆时针排列。
returnPoints:True表示返回值(凸包顶点坐标数组)的点为坐标,False表示返回的点为轮廓数组的索引。
Canny(image, threshold1, threshold2 ,apertureSize=3 ,L2gradient=False)
检测图像中的强度梯度变化,从而识别出物体的轮廓。
参数:
image:用于检测边缘的图。
threshold1 / threshold2:阈值,用于边缘检测中的强度梯度。较低的阈值用于边缘起始点检测,较高的阈值用于边缘连接。阈值越小,细节、噪声越多。
apertureSize:Sobel 算子的孔径大小。
L2gradient:False表示使用 L1 范数,True表示使用更精确的 L2 范数来计算梯度大小。
返回检测到的边缘图,为一个二值化的灰度图像。
用于形状检测。
用于检测图像中的明显的、长的直线。返回直线的极径和极角,比较麻烦。
HoughLinesP(image, rho, theta, threshold [, minLineLength][, maxLineGap])
参数:
image:用于检测直线的图。通常是边缘检测后的结果,如Canny算法的输出。
rho:霍夫空间中的极径分辨率,表示检测直线使用的半径步长。通常使用1(单位:px)。
theta:霍夫空间中的角度分辨率。通常使用pi/180(单位:rad)。
threshold:阈值。用于筛选候选线段,只有累加器中的值高于该阈值的线段才会被返回。
minLineLength:线段的最小长度。小于此长度的线段将被忽略。
maxLineGap:线段之间的最小允许间隔。如果两条线段之间的距离小于此值,则它们可能会被连接成为一条线段。
返回值格式为:
[ [[x11 ,y11 ,x12 ,y12]],
[[x21 ,y21 ,x22 ,y22]],
[[x31 ,y31 ,x32 ,y32]],
…………
[[xn1 ,yn1 ,xn2 ,yn2]] ] #(numpy数组)
其中,xi1,yi1,xi2,yi2表示线段的2个断点横纵坐标。
HoughCircles(image, method, dp, minDist [, param1][, param2][, minRadius][, maxRadius])
参数:
image:用于检测的(灰度)图像。
method:检测方法。唯一值:CV2.HOUGH_GRADIENT。
dp:累加器分辨率与图像分辨率的比例倒数。值越小越精确,但计算代价更高。通常取值为 1。
minDist:圆心间的最小距离。如果距离小于此值,则多个相邻的圆可能会被合并成一个。
param1:用于Canny边缘检测的高阈值。
param2:用于确定圆心的累加器阈值。值越大,圆越少,越精确。
minRadius / maxRadius:最小 / 大半径。
返回值格式:
[[ [x1 ,y1 ,r1],
[x2 ,y2 ,r2],
[x3 ,y3 ,r3],
…………
[xn ,yn ,rn] ]]
其中,xi,yi,ri表示圆的圆心坐标和半径。
参考及代码详见:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。