Использование OpenCV detectMultiScale для поиска моего лица

Я почти уверен, что у меня общая тема правильная, но я не нахожу никаких лиц. Мой код читается из c=cv2.VideoCapture(0) , то есть видеокамеры компьютера. Затем я получаю следующую настройку, чтобы получить, где находятся грани. Как вы можете видеть, я перебираю различные scaleFactors и minNeighbors, но исправления всегда возвращаются пустым. Я также пробовал каждый из четырех различных XML-файлов haarcascade, включенных в пакет opencv / data / haarcascades.

Какие-нибудь советы?

 while(1): ret, frame = c.read() rects = find_face_from_img(frame) def detect(img, cascade): for scale in [float(i)/10 for i in range(11, 15)]: for neighbors in range(2,5): rects = cascade.detectMultiScale(img, scaleFactor=scale, minNeighbors=neighbors, minSize=(20, 20), flags=cv2.cv.CV_HAAR_SCALE_IMAGE) print 'scale: %s, neighbors: %s, len rects: %d' % (scale, neighbors, len(rects)) def find_face_from_img(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.equalizeHist(gray) rects = detect(gray, cascade) в while(1): ret, frame = c.read() rects = find_face_from_img(frame) def detect(img, cascade): for scale in [float(i)/10 for i in range(11, 15)]: for neighbors in range(2,5): rects = cascade.detectMultiScale(img, scaleFactor=scale, minNeighbors=neighbors, minSize=(20, 20), flags=cv2.cv.CV_HAAR_SCALE_IMAGE) print 'scale: %s, neighbors: %s, len rects: %d' % (scale, neighbors, len(rects)) def find_face_from_img(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.equalizeHist(gray) rects = detect(gray, cascade) 

One Solution collect form web for “Использование OpenCV detectMultiScale для поиска моего лица”

Я немного изменил код, чтобы он работал на моем компьютере. Когда я бегу, я получаю результаты

 import cv2 import cv2.cv as cv import getopt, sys def detect(img, cascade): for scale in [float(i)/10 for i in range(11, 15)]: for neighbors in range(2,5): rects = cascade.detectMultiScale(img, scaleFactor=scale, minNeighbors=neighbors, minSize=(20, 20), flags=cv2.cv.CV_HAAR_SCALE_IMAGE) print 'scale: %s, neighbors: %s, len rects: %d' % (scale, neighbors, len(rects)) def find_face_from_img(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.equalizeHist(gray) rects = detect(gray, cascade) if __name__ == '__main__': args, video_src = getopt.getopt(sys.argv[1:], '', ['cascade=', 'nested-cascade=']) try: video_src = video_src[0] except: video_src = 0 args = dict(args) cascade_fn = args.get('--cascade', "cascades/haarcascade_frontalface_alt.xml") cascade = cv2.CascadeClassifier(cascade_fn) c=cv2.VideoCapture(0) while(1): ret, frame = c.read() rects = find_face_from_img(frame) if 0xFF & cv2.waitKey(5) == 27: break в import cv2 import cv2.cv as cv import getopt, sys def detect(img, cascade): for scale in [float(i)/10 for i in range(11, 15)]: for neighbors in range(2,5): rects = cascade.detectMultiScale(img, scaleFactor=scale, minNeighbors=neighbors, minSize=(20, 20), flags=cv2.cv.CV_HAAR_SCALE_IMAGE) print 'scale: %s, neighbors: %s, len rects: %d' % (scale, neighbors, len(rects)) def find_face_from_img(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.equalizeHist(gray) rects = detect(gray, cascade) if __name__ == '__main__': args, video_src = getopt.getopt(sys.argv[1:], '', ['cascade=', 'nested-cascade=']) try: video_src = video_src[0] except: video_src = 0 args = dict(args) cascade_fn = args.get('--cascade', "cascades/haarcascade_frontalface_alt.xml") cascade = cv2.CascadeClassifier(cascade_fn) c=cv2.VideoCapture(0) while(1): ret, frame = c.read() rects = find_face_from_img(frame) if 0xFF & cv2.waitKey(5) == 27: break 

Вывод:

 scale: 1.2, neighbors: 2, len rects: 1 scale: 1.2, neighbors: 3, len rects: 1 scale: 1.2, neighbors: 4, len rects: 1 scale: 1.3, neighbors: 2, len rects: 1 scale: 1.3, neighbors: 3, len rects: 1 scale: 1.3, neighbors: 4, len rects: 0 scale: 1.4, neighbors: 2, len rects: 1 scale: 1.4, neighbors: 3, len rects: 0 scale: 1.4, neighbors: 4, len rects: 0 scale: 1.1, neighbors: 2, len rects: 1 scale: 1.1, neighbors: 3, len rects: 1 scale: 1.1, neighbors: 4, len rects: 1 scale: 1.2, neighbors: 2, len rects: 1 scale: 1.2, neighbors: 3, len rects: 1 scale: 1.2, neighbors: 4, len rects: 1 scale: 1.3, neighbors: 2, len rects: 1 

Некоторые советы: не выбирайте слишком маленький minSize … иначе будет обнаружен каждый маленький предмет, похожий на лицо.

Я предполагаю, что вы просматриваете все эти параметры, чтобы найти те, которые являются лучшими. Я узнал, что minNeighors не должны быть слишком высокими, иначе он не найдет.

Убедитесь, что ваш файл cascade xml связан правильно. Если он не найдет его, он не даст ошибку, он просто не найдет лиц.

  • При чтении видеофайла OpenCV заканчивается память
  • Предварительная обработка плохо отсканированных рукописных цифр
  • Сохранение матрицы RGB в виде текста
  • Извлечение части изображения, которое соответствует маске в OpenCV
  • Использование других ключей для функции waitKey () opencv
  • openCV и python: морфологическое преобразование вне границ
  • OpenCV: используйте solvePnP для определения гомографии
  • Python openCV: пример kmeans не работает
  • Получить значение RGB opencv python
  • Установите opencv в anaconda3
  • Как просматривать видеопоток в OpenCV2 python
  • Python - лучший язык программирования в мире.