最近处理图像,以前用的都是matlab,现在入手python比较慢,这几天看到了很多命名和功能相似的函数,作个记录总结一下~只是为了能够看下函数知道它是做什么的,因此不会对其用法说得面面俱到。看到一个文章讲得清晰详实,分享一下:https://my.oschina.net/u/4386741/blog/3664544
功能:计算轮廓内的面积
示例:
输入为一个点集
# contours[0]为前面用cv2.findContours函数得到的轮廓点集
num_area=cv2.contourArea(contours[0])
print '面积:'+str(num_area)
# 计算轮廓的周长
num_perimeter=cv2.arcLength(contours[0],True)
print '周长:'+str(num_perimeter)
功能:获得输入点集的最小面积的外接矩形包络,所以一般是斜的
示例:
输入为一个轮廓点集,但输出的结果不是一个直接的矩形,需要用cv2.boxPoints返回最小外接矩形的四个坐标,再传入cv2.rectangle函数画出来
img_minrect=cv2.minAreaRect(contours[0])
# 为矩形的中心点坐标
print img_minrect[0]
# 为矩形的长和宽
print img_minrect[1]
# 为矩形的旋转角度,角度范围是[-90,0)
print img_minrect[2]
功能:获得输入点集的最小正外接矩形包络
示例:
输入为一个点集,直接输出外接矩形的左上角顶点坐标x、y、长和宽,因此若要显示的话,直接传入cv2.rectangle函数画出来
功能:返回矩形四个顶点的坐标
示例:
紧接着cv2.minAreaRect函数的输出结果
img_minrect=cv2.minAreaRect(contours[0])
box = cv2.boxPoints(img_minrect)
box = np.int0(box)
功能:根据传入的两个顶点参数——左上角(x,y)和右下角(x+w,y+h),框出一个矩形
示例:
输入为一张图像,要框的矩形范围的左上角和右下角的顶点坐标,边框颜色,边框粗细(若为负值,则矩形会填充满颜色),边框线的种类,边框平移量。一般后面两个参数不用写
img_rect=cv2.rectangle(img, (100, 100), (300, 300), (0, 0, 255), 2)
功能:返回点集的最小外接曲线拟合的多边形
示例:
输入为一个点集、指定精度(值越小,外接多边形的轮廓越接近曲线,因此需靠近要拟合的点集,即接近圆,值越大,则接近直线)、True(拟合曲线需闭合)
approxBox = cv2.approxPolyDP(c,epsilon,True)