Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 结合人脸检测和训练人脸opencv python_Python 3.x_Opencv_Face Detection_Face Recognition - Fatal编程技术网

Python 3.x 结合人脸检测和训练人脸opencv python

Python 3.x 结合人脸检测和训练人脸opencv python,python-3.x,opencv,face-detection,face-recognition,Python 3.x,Opencv,Face Detection,Face Recognition,我想将这两个代码结合起来只工作一次,当我运行save_detected_face.py时,当检测到OpenCV CascadeClassifier时,代码将面保存到jpg文件中,保存到jpg文件后,只要检测过程完成,train_save_face.py就会自动运行 下面是我的示例代码:save_detected_face.py 代码:train_save_face.py save_detected_face.py可以正常工作,但是当我想要训练人脸时,它将无法工作。虽然我不确定这是否正确,但它现在

我想将这两个代码结合起来只工作一次,当我运行save_detected_face.py时,当检测到OpenCV CascadeClassifier时,代码将面保存到jpg文件中,保存到jpg文件后,只要检测过程完成,train_save_face.py就会自动运行

下面是我的示例代码:save_detected_face.py

代码:train_save_face.py


save_detected_face.py可以正常工作,但是当我想要训练人脸时,它将无法工作。

虽然我不确定这是否正确,但它现在正在运行

# -*- coding: cp1252 -*-

import os
import urllib.request
import cv2
import numpy as np
from PIL import Image



recognizer=cv2.face.LBPHFaceRecognizer_create();
path='dataset'

def main():
    #cap = cv2.VideoCapture("../index.htm?clientIpAddr=192.168.1.12&IsRemote=0")
    a=0
    cap = "http://192.168.1.43:8080/shot.jpg"
    id = input('enter user id: ')
    faceDetect=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
    sampleNum=0

    while True:
        a = a+1
        imgResp=urllib.request.urlopen(cap)
        imgNp=np.array(bytearray(imgResp.read()),dtype=np.uint8)
        img=cv2.imdecode(imgNp,-1)

        gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        faces=faceDetect.detectMultiScale(gray,1.3,5);
        for(x,y,w,h) in faces:
            sampleNum = sampleNum+1
            cv2.rectangle(img, (x,y),(x+w,y+h),(255,0,0),2)
    #            roi_gray= gray[y:y+h, x:x+w]
            roi_color= img[y:y+h, x:x+w]
            eyes = eye_cascade.detectMultiScale(roi_color)
            for (ex,ey,ew,eh) in eyes:
                cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
                cv2.imwrite("dataSet/User."+str(id)+"."+str(sampleNum)+".jpg",gray[y:y+h,x:x+w])
        cv2.imshow('frame', img)

        if cv2.waitKey(100) & 0xff == ord('q'):
            break
        elif(sampleNum>20):
            break
        exit(0)

def getImagesWithID(path):
    imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
    faces=[]
    IDs=[]
    for imagePath in imagePaths:
        faceImg=Image.open(imagePath).convert('L');
        faceNp=np.array(faceImg,'uint8')
        ID=int(os.path.split(imagePath)[-1].split('.')[1])
        faces.append(faceNp)
        IDs.append(ID)
        cv2.imshow('training',faceNp)
        cv2.waitKey(10)
    return np.array(IDs), faces
Ids, faces=getImagesWithID(path)
recognizer.train(faces,Ids)
recognizer.save('recognizer/trainingData.yml')
exit(0)
print('done training')
#

if __name__=='__main__':
    main()
    getImagesWithID(path)
import os
import cv2
import numpy as np
from PIL import Image

recognizer=cv2.face.LBPHFaceRecognizer_create();

path='dataset'
def getImagesWithID(path):
    imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
    faces=[]
    IDs=[]
    for imagePath in imagePaths:
        faceImg=Image.open(imagePath).convert('L');
        faceNp=np.array(faceImg,'uint8')
        ID=int(os.path.split(imagePath)[-1].split('.')[1])
        faces.append(faceNp)
        IDs.append(ID)
        cv2.imshow('training',faceNp)
        cv2.waitKey(10)
    return np.array(IDs), faces
Ids, faces=getImagesWithID(path)
recognizer.train(faces,Ids)
recognizer.save('recognizer/trainingData.yml')
exit(0)
print('done training')
# -*- coding: cp1252 -*-

import os
import urllib.request
import cv2
import numpy as np
from PIL import Image



recognizer=cv2.face.LBPHFaceRecognizer_create();
path='dataset'

def main():
    #cap = cv2.VideoCapture("../index.htm?clientIpAddr=192.168.1.12&IsRemote=0")
    a=0
    cap = "http://192.168.1.43:8080/shot.jpg"
    id = input('enter user id: ')
    faceDetect=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
    sampleNum=0

    while True:
        a = a+1
        imgResp=urllib.request.urlopen(cap)
        imgNp=np.array(bytearray(imgResp.read()),dtype=np.uint8)
        img=cv2.imdecode(imgNp,-1)

        gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        faces=faceDetect.detectMultiScale(gray,1.3,5);
        for(x,y,w,h) in faces:
            sampleNum = sampleNum+1
            cv2.rectangle(img, (x,y),(x+w,y+h),(255,0,0),2)
    #            roi_gray= gray[y:y+h, x:x+w]
            roi_color= img[y:y+h, x:x+w]
            eyes = eye_cascade.detectMultiScale(roi_color)
            for (ex,ey,ew,eh) in eyes:
                cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
                cv2.imwrite("dataSet/User."+str(id)+"."+str(sampleNum)+".jpg",gray[y:y+h,x:x+w])
        cv2.imshow('frame', img)

        if cv2.waitKey(100) & 0xff == ord('q'):
            break
        elif(sampleNum>20):
            break
        exit(0)

def getImagesWithID(path):
    imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
    faces=[]
    IDs=[]
    for imagePath in imagePaths:
        faceImg=Image.open(imagePath).convert('L');
        faceNp=np.array(faceImg,'uint8')
        ID=int(os.path.split(imagePath)[-1].split('.')[1])
        faces.append(faceNp)
        IDs.append(ID)
        cv2.imshow('training',faceNp)
        cv2.waitKey(10)
    return np.array(IDs), faces
Ids, faces=getImagesWithID(path)
recognizer.train(faces,Ids)
recognizer.save('recognizer/trainingData.yml')
exit(0)
print('done training')
#

if __name__=='__main__':
    main()
    getImagesWithID(path)