У меня есть структуры данных линия, контур:Удаление данных из списка внутри двух петель для
class Line :
x1
y1
x2
y2
m
c
id
# other functions pertaining to the class
В главном цикле у меня есть список строк, которые уже заселенных в этой точке.
То, что я хочу сделать, это объединить строки, которые имеют т и с значением очень близко, так что я получить одну строку вместо нескольких линий от обнаружения
for line1 in allLines:
consolidateLines = []
for line2 in allLines:
if line1.id() == line2.id():
continue;
if abs(line1.m() - line2.m()) < SomeValue:
if abs(line1.c() - line2.c()) < someOtherValue:
consolidateLines.append(line2);
consolidateLines.append(line1);
# I want to remove all the lines in consolidatedLines.
# But since this is already in the loop, that is a problem.
# How do I accomplish this.
Объясняя проблему: У меня есть список строк. Поскольку эти линии обнаруживаются с использованием алгоритма компьютерного зрения (Hough Transforms), некоторые линии очень близки друг к другу. Это не идеально. Поэтому я пытаюсь консолидировать все линии, которые очень близки и имеют близкую ориентацию. Если одна линия представлена у = х + с, я пытаюсь:
- объединить все строки (возможно, 5 линий, которые находятся рядом) в пределах списка с почти одинаковыми значениями т и с и получить одну строку для них.
- удалить все консолидированные строки
- добавить новую строку, которую я получаю в списке.
это: 'для abs (строка1.c() - строка2.c())
@StephenRauch: Да. жаль, что это было плохо! – navderm
Извините, мне трудно понять, что вы пытаетесь сделать. Не могли бы вы просто объяснить это? У вас есть AllLines с объектами 'Line'. Что вы хотите сделать? – iTayb