2015-04-27 2 views
-2

У меня возникли проблемы с обнаружением лица и обрезкой изображения для лица, работающего ниже, это мой код.Захват области лица с помощью камеры

import cv2 

class Crop: 
    #constructor 
    def __init__(self, image): 
     self.data = image 
    def facechop(self): 
     # read xml for training data 
     facedata = "haarcascade_frontalface_default.xml" 
     cascade = cv2.CascadeClassifier(facedata) 
     # read image file 
     img = cv2.imread(self.data, 0) 

     minisize = (img.shape[1], img.shape[0]) 
     miniframe = cv2.resize(img, minisize) 

     faces = cascade.detectMultiScale(miniframe) 
     for f in faces: 
      x, y, w, h = [ v for v in f ] 
      cv2.rectangle(img, (x, y), (x + w, y + h), (255, 255, 255)) 

      sub_face = self.data[y:y + h, x:x + w] 

     # Show picture 
     cv2.imshow('img', sub_face) 
     return 

входного файла изображения

picture = 'izz.jpg' 
pic = Crop(gambar) 

pic.facechop() 

# keyboard input to destroy the window 
while(True): 
    key = cv2.waitKey(0) 
    if key in [27, ord('Q'), ord('q')]: 
     break 

, когда он работает, он не делает сырец после for функции до sub_face = self.data[y:y + h, x:x + w]. Он напрямую переходит в cv2.imshow('img', sub_face). Таким образом, sub_face не известен. Почему это не работает? Я использую Aptana для его отладки. Спасибо.

ответ

0

Попробуйте изменить свой код следующим образом:

import cv2 

def crop(img): 
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 
    sub_face = img 

    faces = face_cascade.detectMultiScale(img, 1.1, 5) 
    for (x,y,w,h) in faces: 
     sub_face = img[y:y+h, x:x+w] 

    return sub_face 


imageToCrop = cv2.imread('izz.jpg',0) 
croppedImage = crop(imageToCrop) 

cv2.imshow('img',croppedImage) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 
+0

Спасибо @Aphire, на самом деле ваш код может работать, но когда я пытаюсь ввести этот код, чтобы ввести файл изображения, который имеет одно лицо. 'картинка = 'izz.jpg' ' рис = Crop (картинка) '' pic.facechop() ' как мой пост ранее. По-прежнему такая же ошибка. – Gusan

+0

Подождите, я загружу все как функцию внутри скрипта, содержащую правильный способ загрузки изображения. Я отредактирую свой пост за секунду. – Aphire

+0

Okey. Спасибо – Gusan

Смежные вопросы