Я использую scikit-изображение для компьютерного зрения. Я буду использовать поиск контуров, чтобы получить контуры ввода изображения в градациях серого, но возвращенный список содержит контуры на изображении, все в первом месте. Результат, который я хочу получить, является единственным выходным контуром изображения, поэтому я пытаюсь отделить контуры с помощью циклов for, но это требует очень длительного времени, и результат не очень хороший. Может кто-нибудь помочь мне? Код сообщается ниже:
import numpy as np
from skimage.io import imread
from skimage.measure import moments, moments_hu, find_contours, approximate_polygon
from skimage.feature import canny
from matplotlib import pyplot as plt
#%% Opening image section
reference_image = imread('referenceImage.jpg', as_gray= True)
reference_contours = find_contours(reference_image, 0.8, fully_connected='high')
first = True
added = False
reference_contours_list = []
for contours in reference_contours:
for con in contours:
if first:
first = False
reference_contours_list.append(np.array(np.array([con])))
else:
for index, past_con in enumerate(reference_contours_list):
for past_c in past_con:
if con[0] in range(int(round(past_c[0])) - 1, int(round(past_c[0])) + 2):
reference_contours_list[index] = np.append(reference_contours_list[index], np.array(np.array([con])), axis=0)