利用opencv计算mask图形的一些属性,圆度,偏心率,紧致度

import numpy as np
import cv2

import random
# 但因为我们要的是 0 或 1 的值,所以直接创建一个这样的数组
arr = np.zeros((640, 640), dtype=np.uint8)
# 为了简化,我们只将一部分设置为 1
arr[100:random.randint(100,500), 10:random.randint(100,500)] = 255
img = np.uint8(arr)
print(img.shape,"shape")
contours, hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) # OpenCV4~
cnts = sorted(contours, key=cv2.contourArea, reverse=True) # 所有轮廓按面积排序
cnt = cnts[0] # 第 0 个轮廓,面积最大的轮廓,(2867, 1, 2)
# cntPoints = np.squeeze(cnt) # 删除维度为 1 的数组维度,(2867, 1, 2)->(2867,2)
area = cv2.contourArea(cnt) # 轮廓面积 (area)
print("\t轮廓面积: ", area)
perimeter = cv2.arcLength(cnt, True) # 轮廓周长 (perimeter)
print("\t轮廓周长: {:.1f}".format(perimeter))
compact = perimeter ** 2 / area # 轮廓的紧致度 (compactness)
print("\t轮廓紧致度:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值