Задать вопрос

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

Есть нейросеть, которая классифицирует изображения дорожных знаков 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)
  • Вопрос задан
  • 615 просмотров
Подписаться 8 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

Похожие вопросы