3.python包下载安装出错,可以尝试一下方式:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn <+python包>
4.探测器 Haar级联文件下载:
https://github.com/opencv/opencv/tree/master/data
1.文件目录结构:
project:
----image_photograph # 人脸图片文件夹
|----lihua # 名字叫lihua的多张人脸图片
|----xiaoming # 名字叫xiaoming的多张人脸图片
|----zhangfei # 名字叫zhangfei的多张人脸图片
----facefeatures # 存储人脸特征的文件夹
----haarcascade # 人脸探测器的haar级联文件
----main.py # 主程序
2.流程:
(1).获取每一张图片路径,对应id名字(文件夹作为名字)
(2).将每张图片的人脸部分采集出来
(3).id名字进行标签编码处理LabelEncoder
(4).局部二值模式直方图创建人脸识别器
(5).训练人脸识别器
(5).将所有人脸特征与名字信息写入到yml文件中
注意:以后需要用到yml文件时,如果图片名字要与原来一致,还需要原图片名字作为标签解码用
(代码最后return就是名字列表)
"""处理类标签编码"""
class LabelEncoder(object):
def __init__(self):
self.le = preprocessing.LabelEncoder()
def encode_labels(self, label_words):
self.le.fit(label_words)
def word_to_num(self, label_word):
return int(self.le.transform([label_word])[0])
def num_to_word(self, label_num):
return self.le.inverse_transform([label_num])[0]
"""采集人脸信息生成yml"""
class FaceFeatures:
def __init__(self, photo_path):
self.face_cascade = cv2.CascadeClassifier('haarcascade\\haarcascade_frontalface_alt.xml')
self.data_transformation = LabelEncoder()
self.photo_path = photo_path
self.information = None
"""获取所有图片路径,存储图片的父文件夹名字"""
def get_images_information(self):
images = []
information = []
for root, dirs, files in os.walk(self.photo_path):
root = root.replace("/", "\\")
for filename in [x for x in files if x.endswith(".jpg")]:
images.append(os.path.join(os.getcwd(), root, filename))
information.append(root.split('\\')[-1])
self.data_transformation.encode_labels(information)
self.information = information
return images, information
"""采集所有人脸信息,名字标签编码处理"""
def get_features(self, images, information):
face_images_info = []
face_name_info = []
for num in range(len(images)):
ret = cv2.imread(images[num], 0)
faces = self.face_cascade.detectMultiScale(ret, 1.1, 2, minSize=(100, 100))
for (x, y, w, h) in faces:
face_images_info.append(ret[y:y + h, x:x + w])
face_name_info.append(self.data_transformation.word_to_num(information[num]))
return face_images_info, face_name_info
"""人脸信息录入yml文件, 返回图片对应的名字"""
def info_enter(self):
recognizer = cv2.face.LBPHFaceRecognizer_create()
images, information = self.get_images_information()
face_images_info, face_name_info = self.get_features(images, information)
recognizer.train(face_images_info, np.array(face_name_info))
recognizer.write("facefeatures/trainer.yml")
return self.information
if __name__ == '__main__':
FaceFeatures(os.path.join(os.getcwd(), "image_photograph")).info_enter()
发现知乎编辑器支持二级标题了上个月公司繁琐的事情实在是太多了,基本上每天都加班,想来已经很久没有更新文章了,今日利用清明放假的时间,是时候总结一下上篇一文中介绍的【mac环境tensorflow的安装及更新,含
人脸识别
】中遗留的内容【
人脸识别
】了
人脸识别
主要分为四大块:
人脸
定位(face detection)、
人脸
校准(face alignment)、
人脸
确认(face verificatio...
本项目基于
python
_
opencv
开发的
人脸识别
的开源项目,应用机器学习dlib库实现,开发设计UI界面用于
录入
人脸
,姓名(中英文)
信息
。希望大家多多支持!!!!
本次用的数据集是
opencv
给出的教程里面的第一个数据集:The AT&T Facedatabase,又称为ORL
人脸
数据库,40个人,每人10张照片。照片在不同时间、不同光照、不同表情(睁眼闭眼、笑或者不笑)、不同
人脸
细节(戴眼镜或者不戴眼镜)下
采集
。所有的图像都在一个黑暗均匀的背景下
采集
的,正面竖直
人脸
(有些有轻微旋转)。
声音的本质是震动,震动的本质是位移关于时间的函数,波形文件(.wav)中记录了不同采样时刻的位移。
通过傅里叶变换,可以将时间域的声音函数分解为一系列不同频率的正弦函数的叠加,通过频率谱线的特殊分布,建立音频内容和文本的对应关系,以此作为模型训练的基础。
import numpy as np
import numpy.fft as nf
import scipy.io.wavfi...
目前
人脸识别
有很多较为成熟的方法,这里调用
OpenCv
库,而
OpenCV
又提供了三种
人脸识别
方法,分别是LBPH方法、EigenFishfaces方法、Fisherfaces方法。本文采用的是LBPH(Local Binary Patterns Histogram,局部二值模式直方图)方法。
opencv
是一个开源的的跨平台
计算机视觉
库,内部实现了图像处理和
计算机视觉
方面的很多通用算法,对于
python
而言,在引用
opencv
库的时候需要写为import cv2。其中,cv2是
opencv
的C++命名空间名称
多目标跟踪是
计算机视觉
中的重要任务之一,它涉及目标检测、目标跟踪和目标关联等关键技术。传统的多目标跟踪方法主要基于
特征
提取、分类器和滤波器等传统的
计算机视觉
技术,而深度学习方法通过使用深度模型来学习目标的外观
特征
和运动
信息
,从而实现更准确和鲁棒的目标跟踪。最后,打印出准确率。
计算机视觉
领域中的目标跟踪是一项重要的研究任务,它涉及在视频序列中自动识别和跟踪多个感兴趣的目标。多目标跟踪(Multi-object Tracking)旨在从连续的图像帧中准确地定位和跟踪多个目标,同时保持目标的身份一致性。