首页 / 科技发展 / 天天快乐看视频(天天快乐视频在线观看)

天天快乐看视频(天天快乐视频在线观看)

Time:2024-06-19 11:29:09 Read:725 作者:CEO

在本文中,我们探讨了OpenCV 和Python 在创建强大的人脸识别系统方面的巨大潜力。从而逐步实现图像和视频中人脸识别的整个过程。通过清晰的解释和实际的例子,我们希望您对计算机视觉和人脸识别有更深入的了解。

下载 OpenCV 库

天天快乐看视频(天天快乐视频在线观看)

访问官网下载安装:https://opencv.org/

(资料图片仅供参考)

pip install opencv-python安装完成后,我们可以在sources/data/haarcascades文件夹中看到这些文件

包含人眼识别、人脸识别等强大的识别算法

人脸检测报警系统(可用于:家庭监控、人脸门禁、人脸考勤等)

人脸抓拍功能模块。

首先导入cv库。

import cv2 然后调用我们的相机(0代表本地相机,其他数字代表外部相机)。

cap=cv2.VideoCapture(0) 使用while 循环来确定它是否打开。

while(cap.isOpened()): 获取每一帧的图像。

ret_flag,Vshow=cap.read() 调用控制键盘函数来控制和确定按键。

k=cv2.waitKey(1)0xFF 使用imshow 函数显示捕获的图像。

cv2.imshow('ceshi',Vshow) 监听键盘输入并按“s”键保存。

if k==ord('s'): 保存捕获图像的格式并打印提示文本。

cv2.imwrite('/tmp/'+str(num)+'.name'+'.jpg',Vshow) print('保存'+str(num)+'.jpg') print('---- ---------------------------------') num +=1 释放相机和内存。

cap.release()cv2.destroyAllWindows() 完整代码片段

导入cv2cap=cv2.VideoCapture(0) falg=1num=1 while(cap.isOpened()): ret_flag,Vshow=cap.read() k=cv2.waitKey(1)0xFF cv2.imshow('ceshi',Vshow ) if k==ord('s'): cv2.imwrite('/tmp/'+str(num)+'.name'+'.jpg',Vshow) print('保存'+str(num)+ '.jpg') print('-------------------------') num +=1 elif k==ord(' '): 中断cap.release()cv2.destroyAllWindows()

录人脸功能模块

在编写此功能模块之前,我们需要在该文件的根目录下使用以下命令在Pycharm或cmd中安装face模块

pip install opencv-contrib-python 导入依赖项

import osimport cv2from PIL import Imageimport numpy as np 存储人脸数据

facesSamples=[] 存储姓名数据

ids=[] 存储图像信息

imagePaths=[os.path.join(path,f) for f in os.listdir(path)] 加载分类器

face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 遍历图像

for imagePaths: 将打开的图像转换为灰度

PIL_img=Image.open(imagePath).convert('L') 将图像转换为数组

img_numpy=np.array(PIL_img,'uint8') 获取图片中的面部特征

faces=Face_Detector.detectMultiScale(img_numpy) 获取每张捕获图片的id和名称

id=int(os.path.split(imagePath)[1].split('.')[0]) 防止拍摄没有脸部的照片

for x,y,w,h in faces: ids.append(id) facesSamples.append(img_numpy[y:y+h,x:x+w]) 打印面部特征和ID 并返回数据

print('id',id) print('fs:',facesSamples) return facesSamples,ids 调用图像路径(第1步抓取人脸后,按s键将图像保存在路径'/tmp/'下)

path='/tmp/' 检索图像数组和ID 标签数组和名称

faces,ids=getImageAndLabels(path) 加载识别器

recognizer=cv2.face.LBPHFaceRecognizer_create() 训练数据

recognizer.train(faces,np.array(ids)) 创建一个目录来存储读取的人脸信息

recognizer.write('tmp/tupian.yml') 完整代码片段

导入osimport cv2from PIL 导入Imageimport numpy as np def getImageAndLabels(path): facesSamples=[] ids=[] imagePaths=[os.path.join(path,f) for f in os.listdir(path)] Face_Detector=cv2. CascadeClassifier('open-cv-installed-path/sources/data/haarcascades/haarcascade_frontalface_default.xml') for imagePath in imagePaths: PIL_img=Image.open(imagePath).convert('L') img_numpy=np.array(PIL_img,' uint8') faces=face_detector.detectMultiScale(img_numpy) id=int(os.path.split(imagePath)[1].split('.')[0]) for x,y,w,h faces: ids.append (id) facesSamples.append(img_numpy[y:y+h,x:x+w]) print('id',id) print('fs:',facesSamples) return facesSamples,ids if __name__=='__main__': path='/tmp/' faces,ids=getImageAndLabels(path) recognizer=cv2.face.LBPHFaceRecognizer_create() recognizer.train(faces,np.array(ids)) recognizer.write('tmp/tupian.yml')

人脸识别功能模块

导入依赖项

import cv2import os 加载训练好的数据文件

recognizer=cv2.face.LBPHFaceRecognizer_create() 加载保存的人脸信息

recogizer.read('tmp/tupian.yml') 定义名称数组

name=[] 定义全局变量用于标识

warningtime=0 视频模块中的人脸识别

defface_detect_demo(img):gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)face_Detector=cv2.CascadeClassifier('open-cv-installed-path/sources/data/haarcascades/haarcascade_frontalface_default.xml')face=face_ detector.detectMultiScale(灰色)对于face:中的x,y,w,h cv2.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2) cv2.circle( img,center=(x+w//2,y+h//2),radius=w//2,color=(0,255,0),thickness=1) ids,confidence=recogizer.predict(gray[y:y] + h, x:x + w]) ifconfidence 80: global warningtime warningtime +=1 if warningtime 100: # warning() warningtime=0 cv2.putText(img, 'unknown', (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX , 0.75, (0, 255, 0), 1) else: cv2.putText(img,str(names[ids-1]), (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255 , 0), 1) cv2.imshow('result',img) 导入存储的图像名称标签

def name(): 路径='/tmp/' # 名称=[] imagePaths=[os.path.join(path,f) for f in os.listdir(path)] for imagePath in imagePaths: name=str(os. path.split(imagePath)[1].split('.',2)[1]) names.append(name)加载视频

cap=cv2.VideoCapture('1.mp4')name()while True: flag,frame=cap.read() 如果不是flag: 中断face_detect_demo(frame) if ord(' ')==cv2.waitKey(10): 中断释放内存和视频

cv2.destroyAllWindows()cap.release() 完整代码片段

导入cv2import osrecogizer=cv2.face.LBPHFaceRecognizer_create()recogizer.read('tupian/tupian.yml')names=[]warningtime=0defface_detect_demo(img):gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)face_ detector=cv2 .CascadeClassifier('open-cv-installed-path/sources/data/haarcascades/haarcascade_frontalface_default.xml')face=face_detector.detectMultiScale(gray) for x,y,w,h in face: cv2.rectangle(img,(x, y),(x+w,y+h),颜色=(0,0,255),厚度=2) cv2.circle(img,center=(x+w//2,y+h//2),半径=w//2,color=(0,255,0),thickness=1) ids,confidence=recogizer.predict(gray[y:y + h, x:x + w]) ifconfidence 80: global warningtime warningtime +=1 if warningtime 100: # warning() warningtime=0 cv2.putText(img, 'unkonw', (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1) else: cv2.putText(img,str (名称[ids-1]), (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1) cv2.imshow('结果',img) def name():路径='/tmp/' # 名称=[] imagePaths=[os.path.join(path,f) for f in os.listdir(path)] for imagePath in imagePaths: name=str(os.path.split(imagePath) )[1].split('.',2)[1]) name.append(name)cap=cv2.VideoCapture('1.mp4')name()while True: 标志,frame=cap.read() if not flag:breakface_detect_demo(frame)iford('')==cv2.waitKey(10):breakcv2.destroyAllWindows()cap.release()最后,希望这些示例代码对您的项目有所帮助!

Copyright © 2002-2024 讯肆科技网 版权所有 

免责声明: 1、本站部分内容系互联网收集或编辑转载,并不代表本网赞同其观点和对其真实性负责。 2、本页面内容里面包含的图片、视频、音频等文件均为外部引用,本站一律不提供存储。 3、如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除或断开链接! 4、本站如遇以版权恶意诈骗,我们必奉陪到底,抵制恶意行为。 ※ 有关作品版权事宜请联系客服邮箱:478923*qq.com(*换成@)

备案号: 沪ICP备2023025279号-31