def find_bbox(mask_binary, margin_factor=None):
ret, thresh = cv2.threshold(mask_binary, 127, 255, 0)
_, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# Find the index of the largest contour
areas = [cv2.contourArea(c) for c in contours]
if len(areas) == 0:
return (0, 0, mask_binary.shape[0], mask_binary.shape[1], False)
else:
max_index = np.argmax(areas)
cnt = contours[max_index]
x, y, w, h = cv2.boundingRect(cnt)
if margin_factor != None and margin_factor > 0:
wm = w * margin_factor
hm = h * margin_factor
x -= wm
y -= hm
w += 2 * wm
h += 2 * hm
x = max(0, x)
y = max(0, y)
X = min(x + w, mask_binary.shape[1])
Y = min(y + h, mask_binary.shape[0])
w = X - x
h = Y - y
return (int(x), int(y), int(w), int(h), True)
predict.py 文件源码
python
阅读 27
收藏 0
点赞 0
评论 0
评论列表
文章目录