如何解决是否有一种技术可以找到连接组件的厚度?
假设我有一个人类形式的二进制图像(黑色背景上的白色人体轮廓)。有没有定义最小厚度的好方法?我会说手腕可能是整个连接组件中最薄的部分。但我不清楚如何定义它。也许是在生产两个或更多断开连接的组件之前所需的腐蚀量?
到目前为止我有这个
from skimage.measure import euler number
import cv2
import numpy as np
def get_min_thickness(img: np.ndarray):
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
n_components_start,_ = cv2.connectedComponents(img,connectivity=4)
n_components = n_components_start
euler_4_start = euler_number(img,connectivity=4)
euler_4 = euler_4_start
euler_8_start = euler_number(img,connectivity=8)
euler_8 = euler_8_start
thickness = 0
if n_components_start > 0:
while n_components == n_components_start \
and euler_4 == euler_4_start and euler_8 == euler_8_start:
img = cv2.erode(img,kernel)
thickness += 2
n_components,connectivity=4)
euler_4 = euler_number(img,connectivity=4)
euler_8 = euler_number(img,connectivity=8)
return thickness
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。