Как найти на изображении определенный объект?

Есть нейросеть, которая классифицирует изображения дорожных знаков 200х200
5dc7fcf66a520545212482.png
5dc7fd01eb043531459996.png
Как теперь найти эти знаки на изображении 1920х1080? Пробовал обрезать по контурам, но вместе со знаками сохраняется еще и всякий мусор.
5dc7fd7583f1d976979995.png

import cv2
from PIL import Image

image = cv2.imread("C:/Users/pikro/PycharmProjects/ML/road_sign/test.png")

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edged = cv2.Canny(image, 10, 200)
_, cnts, _ = cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
idx = 0

rects = sorted([cv2.boundingRect(c) for c in cnts], key=lambda x: x[0])

for x, y, w, h in rects:
    if w > 100 and h > 100:
        idx += 1
        new_img = image[y - 3:y + h + 3, x - 3:x + w + 3]
        cv2.imwrite("C:/Users/pikro/PycharmProjects/ML/road_sign/crop/" + str(idx) + '.png', new_img)
cv2.imshow("im", image)
cv2.waitKey(0)
  • Вопрос задан
  • 614 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы