Как удалить короткую и отсоединенную линию, но сохранить все остальные связанные строки на следующем изображении?OpenCV - Удаление независимой короткой строки на изображении
ответ
Если изображение всегда это хорошо связан, вы можете выбрать компоненты, основываясь на их размере. Мой код в Python (может быть более простым способом, но это, как я это делаю):
#get all connected components in the image with their stats (including their size, in pixel)
nb_edges, output, stats, _ = cv2.connectedComponentsWithStats(img, connectivity=8)
#output is an image where every component has a different value
size=stats[1:,-1] #extracting the size from the statistics
#selecting bigger components
for e in range(0,nb_edges-1):
#replace this line depending on your application, here I chose to keep
#all components above the mean size of components in the image
if size[e]>=np.mean(size):
th_up = e + 2
th_do = th_up
#masking to keep only the components which meet the condition
mask = cv2.inRange(output, th_do, th_up)
result = cv2.bitwise_xor(original_img, mask)
Спасибо! Но не могли бы вы изменить его на C++. У Python есть некоторая ошибка с opencv3. И я также не знаком с Python. Извините –
Подключенные компоненты - лучший способ пойти. @BryanYU PLS не ожидают, что люди напишут явный код для вас. Существует достаточно документации для преобразования Python в C++ и наоборот –
Благодарим вас за предложение. –
Как об использовании морфологических операций искать переходы, а затем отбрасывая строки, которые не имеют перекрестков? –