Использование 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 Python и карта несоответствия
  • Как скомпилировать OpenCV для iOS7 (arm64)
  • Реконструированное изображение после лапласианской пирамиды Не то же самое, что оригинальное изображение
  • OpenCV python: ValueError: слишком много значений для распаковки
  • Вероятностное преобразование Хафа в OpenCV 2.4.9 (Python)
  • Выбор наилучшего диапазона значений из кривой гистограммы
  • Возможно ли в OpenCV построить локальную кривизну в виде тепловой карты, представляющей «интересность» объекта?
  • Python - лучший язык программирования в мире.