Поиск точек сверления на плате с помощью python и openCV
Делаю станок для сверления монтажных отверстий и фрезеровки контура на плате. С контуром все понятно и легко. А вот как искать центры окружностей не могу разобраться, ведь как таковой окружности там и нет, а что-то на подобии.
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Это конечно не сильно тянет на ответ, но как пример на побаловаться:
import cv2
import numpy as np
import os
# Загрузка исходника
image = cv2.imread('E6wyp.jpg')
# Папка с шаблонами
templates_folder = 'img'
# Проход по каждому шаблону в папке
for template_file in os.listdir(templates_folder):
template_path = os.path.join(templates_folder, template_file)
print(template_path)
# шаблон
template = cv2.imread(template_path)
# Совпадение по шаблону
result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
# Порог "хороших" совпадений
threshold = 0.75
# Позиции, где совпадение превышает порог
locations = np.where(result >= threshold)
# Рисуем прямоугольник по полученной позиции
for loc in zip(*locations[::-1]):
top_left = loc
bottom_right = (loc[0] + template.shape[1], loc[1] + template.shape[0])
center = ((top_left[0] + bottom_right[0]) // 2, (top_left[1] + bottom_right[1]) // 2)
cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)
# Выводим координаты центра
print(f"Шаблон: {template_file}, Центр совпадения: {center}")
# Наш результат
cv2.imshow('Найденные места', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Произвольно нарезал 4 дырки из изображения для поиска похожих мест. И вот что получилось:

Конечно не бог есть что, но как пример в вакууме можно рассмотреть и подумать, а стоит ли идти этим путём.
Бонусом координаты "центра":






