私有属性
不想被别人知道。这样的属性称为私有属性。比如长得矮的不想让别人知道身高,就需要设置访问权限。单下划线_height只允许类和子类访问,双下划线只允许本类访问,类的实例也不行。
# 绘制最小外接矩形框 rect = cv2.minAreaRect(contours[i]) # rect返回矩形的特征信息,其结构为【最小外接矩形的中心(x,y),(宽度,高度),旋转角度】 points = cv2.boxPoints(rect) # 得到最小外接矩形的四个点坐标 points = np.int0(points) # 坐标值取整 image = cv2.drawContours(original, [points], 0, (0, 0, 255), 2) # 直接在原图上绘制矩形框 cv2.imshow("result", image)
注:iterations #迭代次数 ret # return (返回)的缩写
对于图像的处理,基本的步骤是这样的:
取得图像数据 —— 将图像进行平滑处理 —— 进行边缘检测,阈值分析 —— 进行形态学的操作 —— 获取某些特征点 —— 分析数据
轮廓的面积
几何矩实质是面积或质量。函数 cv.moments() 的返回值 Moments[‘m00’] 表示轮廓面积。
轮廓的面积也可以使用函数 cv2.contourArea() 计算。
函数说明:
area = cv2.contourArea(cnt)
contour:顶点构成的二维向量组(如轮廓列表 contours 中的一个轮廓)
oriented:定向区域标志,默认值为 False,返回面积的绝对值,Ture 时则根据轮廓方向返回带符号的数值
轮廓的周长
轮廓的周长可以使用函数 cv2.arcLength() 计算。
函数说明:
perimeter = cv2.arcLength(cnt,True)
curve:以顶点构成的二维向量组表示的曲线(如轮廓列表 contours 中的一个轮廓)
closed:曲线闭合标志,True 表示闭合曲线
轮廓的近似
轮廓的近似是用顶点数量较少的多边形对轮廓进行近似,可以使用函数 cv2. approxPolyDP() 实现。近似多边形的边数取决于设定的最大近似距离。
函数说明:
approx=cv2.approxPolyDP(cnt,epsilon,True)
curve:以顶点构成的二维向量组表示的曲线(如轮廓列表 contours 中的一个轮廓)
approxCurve:近似多边形顶点坐标 (x,y) 的二维向量组
epsilon:近似精度,浮点数,原始曲线与近似多边形之间的最大距离
closed:曲线闭合标志,True 表示近似曲线是闭合的
梯度=原图 - 腐蚀
gradient=cv2.morphologyEx(img , MORPH_GRADIENT , kernel)
角点检测
cv2.cornerHarris(img, blockSize, ksize, k)