opencv:轮廓属性

    1. Aspect Ratio宽与高之比 

cv2.boundingRect(cnt)
2. Extent 目标面积 占 边界矩形框 的比例
area = cv2.contourArea(cnt)
x,y,w,h = cv2.boundingRect(cnt)
rect_area = w*h
extent = float(area)/rect_area
3. Solidity 目标面积 占 边界凸形边界 的比例
area = cv2.contourArea(cnt)
hull = cv2.convexHull(cnt)
hull_area = cv2.contourArea(hull)
solidity = float(area)/hull_area
4. Equivalent Diameter 与目标面积相等的圆的直径
area = cv2.contourArea(cnt)
equi_diameter = np.sqrt(4*area/np.pi)
5. Orientation 得到目标的方向,顺带还得到最大轴和最小轴
(x,y),(MA,ma),angle = cv2.fitEllipse(cnt)
6. Mask and Pixel Points 获得该目标所有点的坐标
mask = np.zeros(imgray.shape,np.uint8)
cv2.drawContours(mask,[cnt],0,255,-1)
pixelpoints = np.transpose(np.nonzero(mask))
#pixelpoints = cv2.findNonZero(mask)
7. Maximum Value, Minimum Value and their locations
8. Mean Color or Mean Intensity
9. Extreme Points
topmost, bottommost, rightmost and leftmost points of the object.
以上笔记自:http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_contours/py_contour_properties/py_contour_properties.html
另外几个操作:笔记自http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_contours/py_contours_more_functions/py_contours_more_functions.html
1.判断一个点是否在一个形状内部,以及到这个形状的最短距离
dist = cv2.pointPolygonTest(cnt,(50,50),True)
2.判断两个形状的相似性(没理解错的话,用的七阶矩)

总结:
2. Extent 目标面积 占 边界矩形框 的比例 因为面积这个东西不受邮箱,配件这些细节影响。所以这个参数可否可以作为识别的一个粗的特征?
3. Solidity 目标面积 占 边界凸形边界 的比例 因为面积这个东西不受邮箱,配件这些细节影响。所以这个参数可否可以作为识别的一个粗的特征?


遗留问题:
5.中提取方向和轴用的什么方法?


你可能感兴趣的:(5.opencv学习笔记)