def find_counts(subtracted_img,img, cross_s_text, border_coord, ratio):
# height, width = img.shape[:2]
segmented_img = img.copy()
contour_list = []
#air_duct_img取灰度图。取二值
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh1 = cv2.threshold(gray, 10, 255, cv2.THRESH_BINARY)
#subtracted_img取灰度图。取二值
subtracted_img_gray = cv2.cvtColor(subtracted_img, cv2.COLOR_BGR2GRAY)
_, thresh2 = cv2.threshold(subtracted_img_gray, 10, 255, cv2.THRESH_BINARY)
# thresh1减去thresh2
subtracted = cv2.subtract(thresh1, thresh2)
# canny检测得到边缘信息
edges = cv2.Canny(subtracted, 20, 255)
# cv2.imwrite(img_path_temp + '_edges.png', edges)
# contours_tree=[]
element = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 9), (-1, -1))
# 闭运算,连接有间隙的轮廓
opened = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, element)
# Find contours
if '3.4' in cv2.__version__:
_, contours_tree, hierarchy = cv2.findContours(opened, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
else:
contours_tree, hierarchy = cv2.findContours(opened, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 画轮廓
cv2.rectangle(segmented_img, (origin_entity_bbox[0], origin_entity_bbox[1]),
(origin_entity_bbox[2], origin_entity_bbox[3]), (0, 0, 0), 1)
# 轮廓填充
cv2.fillPoly(segmented_img, [hole], get_random_color())
python 使用opencv找轮廓
最新推荐文章于 2024-04-28 20:14:35 发布