登录 |  注册 |  繁體中文


cv2轮廓特征

分类: python 颜色:橙色 默认  字号: 阅读(861) | 评论(0)

import cv2
import numpy as np

img = cv2.imread(a.jpg, 0)
reg, thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

# 以数字3的轮廓为例
cnt = contours[0]

area = cv2.contourArea(cnt)  # 轮廓面积
perimeter = cv2.arcLength(cnt, True) #轮廓周长, 参数2表示轮廓是否封闭,显然我们的轮廓是封闭的,所以是True。

#形状的外接矩形有两种,如上图,绿色的叫外接矩形,表示不考虑旋转并且能包含整个轮廓的矩形。蓝色的叫最小外接矩,考虑了旋转
x, y, w, h = cv2.boundingRect(cnt)  # 外接矩形
#x,y是矩阵左上点的坐标,w,h是矩阵的宽和高
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)

rect = cv2.minAreaRect(cnt)  # 最小外接矩形
box = np.int0(cv2.boxPoints(rect))  # 矩形的四个角点取整
cv2.drawContours(img, [box], 0, (255, 0, 0), 2)



姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部