Мы все любим каскады хара.
Более того, в Python OpenCV обнаружение лиц во входном изображении довольно просто:
import cv2
img = cv2.imread("picture.jpg", 0)
haar_face = "haarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(haar_face)
faces = faceCascade.detectMultiScale(img, 1.3, 5)
Но как я обнаруживаю руки, следуя точному же подходу?
Я искал, загружал и использовал много XML файлов из Интернета, но все они выполнялись очень плохо.
Может ли кто-нибудь указать хорошую ссылку на файл xml haarcascade для обнаружения рук?
Использование haarcascades для обнаружения рук не даст очень надежных результатов обнаружения из-за различных возможных поз рук. Таким образом, открытой руке или кулаку потребуются отдельные хааркаскады. Хотя haarcascades не могут обрабатывать вращение очень хорошо.
Если ваше оборудование позволяет это, вы можете использовать глубокие нейронные сети для обнаружения рук. Очень надежный подход заключается в обнаружении позы тела и извлечении ручных ключевых точек оттуда:
Очень надежный, но также очень ресурсный голод/медленный (требуется графический процессор):
https://github.com/CMU-Perceptual-Computing-Lab/openpose
Менее точные, но гораздо быстрее:
https://github.com/ildoonet/tf-pose-estimation
Просто новый и многообещающий, но непроверенный для меня:
https://github.com/tensorlayer/openpose-plus
Используйте соответствующий файл haarcascades. В фонде нет ни одного, но кто-то сделал свой заказ на https://github.com/Balaje/OpenCV/tree/master/haarcascades. (Отказ от ответственности: я не проверял его.)