Я обработал изображение, используя openCV, чтобы получить шаблон изображения.Шаблон изображения представлен 2 Python списками горизонтальных и вертикальных линий соответственно.Линии представляют границы шаблонов.
fx = horizontal lines
fy = vertical lines
Каждый список упорядочен по порядку на основе расстояния от верхнего левого угла изображения.Затем я использую следующее для вычисления точек пересечения этих обнаруженных линий:
def get_corners(fx,fy):
corners = []
for x_line in fx:
for y_line in fy:
corner = get_intersection(x_line,y_line)
if corner is not None:
corners.append(corner)
Это должно дать мне corners
(в формате: (x,y)
) по порядку слева направо, сверху вниз,Теперь я хочу использовать эти координаты, чтобы вырезать прямоугольники из изображения.
Размер списка corners
варьируется, и шаблоны складываются, что означает, что у них есть общие точки.Учитывая список точек, а также размер списков линий fx
и fy
:
Как использовать точки для обрезки прямоугольников?
Не стесняйтесь менять get_corners()
, если вам нужно.
Вот пример: Обнаружение шаблона дает 4 возможных прямоугольника в 2x2.Это означает, что список points
содержит всего 9 значений.
Points: [[],[],[],
[],[],[],
[],[],[]]
Я могу обрезать первый прямоугольник, используя что-то вроде этого:
x1,y1 = points[0] #top left corner of the first pattern
x2,y2 = points[5] #bottom right corner of the first pattern
#rectangle
rectange = img[y1:y2,x1:x2]