python 调用摄像头,基于opencv 的人脸检测实现

    xiaoxiao2026-05-09  1

    装好opencv之后,将opencv里面source里的data全部考到自己的py代码文件目录下,运行即可。先调用摄像头,抓取一张照片,按下按键,然后检测人脸,用框标注,再按下按键,保存照片,接着抓取。直到按q退出。

    每一句代码写得都很详细,容易看懂。识别人脸的特征,可以使用haar算法(引入haarcascade_frontalface_alt),也可以使用LBP(引入lbpcascade_frontalface)

    只是找了相关的代码,拼凑而成,起码是个连续的例子,还有不少改进的空间,以后有时间慢慢来吧

    from numpy import *

    import cv2 ##########################开启摄像头############# capture=cv2.VideoCapture(0) #将capture保存为motion-jpeg,cv_fourcc为保存格式 size = (int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),         int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT))) #cv_fourcc值要设置对,不然无法写入,而且不报错 video=cv2.VideoWriter("VideoTest.avi", cv2.cv.CV_FOURCC('I','4','2','0'), 30, size) #isopened可以查看摄像头是否开启 print capture.isOpened() ##########################图像检测准备工作############# #face_cascade = cv2.CascadeClassifier('data/haarcascades/haarcascade_frontalface_alt.xml') face_cascade = cv2.CascadeClassifier('data/lbpcascades/lbpcascade_frontalface.xml') #img = cv2.imread("5.jpg")#从硬盘读 ######################################### num=0 while True: #视频中的图片一张张写入     ret,img=capture.read()     video.write(img)          #显示并写硬盘     cv2.imshow('img',img)     cv2.imwrite('%s.jpg'%(str(num)),img)          #暂停一下等待按键     key=cv2.waitKey(0)#里面数字为delay时间,如果大于0为刷新时间,     #超过指定时间则返回-1,等于0没有返回值,但也可以读取键盘数值          #######################检测人脸代码#####################     grayimg=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#灰度转换     faces_rect = face_cascade.detectMultiScale(grayimg,1.2,3)#得到一个矩形,faces是多个矩形(一个脸一个) #将多个脸用框画出来     for (x,y,w,h) in faces_rect:    img2= cv2.rectangle(img,(x,y),(x+w,y+h),(255,255,255),2)    roi_gray = grayimg[y:y+h,x:x+w]    roi_color = img[y:y+h,x:x+w]          cv2.imshow('img',img)     key=cv2.waitKey(0)     cv2.imwrite('%s.header.jpg'%(str(num)),img)     ############################################               num=num+1     if key==ord('q'):#ord为键盘输入对应的整数,         break video.release() #如果不用release方法的话无法储存,要等结束程序再等摄像头关了才能显示保持成功 capture.release()#把摄像头也顺便关了   cv2.destroyAllWindows()
    转载请注明原文地址: https://ju.6miu.com/read-1309510.html
    最新回复(0)