Существуют различные подходы, которые вы можете использовать:
Вероятно, наиболее многообещающим методом будет обучение модели глубокого обучения с использованием данных вашего костюма. Взгляните на эту статью.
Вы можете добавить некоторые другие фильтры перед поиском прямоугольников. Например, если экран телефона выключен, вы можете использовать цветной фильтр HSV для черных объектов. Я хотел бы сделать что-то вроде этого:
blur = cv2.blur(img,(5,5))
hsv = cv2.cvtColor(blur, cv2.COLOR_BGR2HSV)
# Play with these values. They are the HSV lower and upper bounds:
lower_black = np.array([0, 5, 50], np.uint8)
upper_black = np.array([179, 50, 255], np.uint8)
mask = cv2.inRange(hsv, lower_black, upper_black)
# mask = cv2.Canny(mask, 60, 120) - optional
img_res = cv2.bitwise_and(img, img, mask=mask)
(np
относится к numpy
).
Теперь попробуйте выполнить определение контура на img_res
, Обратите внимание, что значения нижнего и верхнего предела HSV должны быть точно настроены для достижения наилучших результатов.
- Если обнаружение контуров не работает на отфильтрованном изображении, попробуйте применить функцию обнаружения края Canny на
mask
, как указано в коде.