corrected function for detecting external edges

This commit is contained in:
llocarnini 2022-02-02 11:25:10 +01:00
parent bb5083d419
commit 5abc80aced

View File

@ -81,7 +81,6 @@ def annotate_image(image, stats):
def find_and_close_edges(img_bin_final):
contours, hierarchy = cv2.findContours(img_bin_final, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# contoured_img = cv2.drawContours(img_bin_final,contours, -1,(255,255,255),2)
for cnt in contours:
missing_external_edges = True
left = tuple(cnt[cnt[:, :, 0].argmin()][0])
@ -89,15 +88,18 @@ def find_and_close_edges(img_bin_final):
top = tuple(cnt[cnt[:, :, 1].argmin()][0])
bottom = tuple(cnt[cnt[:, :, 1].argmax()][0])
topleft = [left[0] + 1, top[1]]
# print(cnt, left, top, topleft)
bottomright = [right[0] - 1, bottom[1]]
for arr in cnt:
if np.array_equal(arr, np.array([bottomright])) or np.array_equal(arr, np.array([topleft])):
missing_external_edges = False
break
if missing_external_edges:
if missing_external_edges and (bottomright[0]-topleft[0])*(bottomright[1]-topleft[1])>= 50000:
topleft[0] -= 1
bottomright[0] += 1
cv2.rectangle(img_bin_final, tuple(topleft), tuple(bottomright), (255,255,255) , 2)
print("missing cell detectet rectangle drawn")
return img_bin_final