基于OpenCV和LBPH算法的人脸识别系统(附Python完整代码)

LBPH算法(超详细) LBPH算法是一种简单、高效、鲁棒性强的人脸识别算法。它采用局部二值模式来提取特征,将每个局部区域的特征串联成一个整体特征向量。该算法被广泛应用于人脸识别、人脸表情识别、行人检测等领域。 阅读详情

简介

        本文将介绍一种基于LBPH(Local Binary Pattern Histograms)设计方法的人脸识别系统,使用了OpenCV库和深度学习模型的集成。LBPH方法以其对纹理特征的强大提取能力而在人脸识别领域备受青睐。通过本系统,我们不仅可以实时通过摄像头采集用户信息,还可以通过导入相片的方式来添加用户数据。

        OpenCV(Open Source Computer Vision Library)是一个用于计算机视觉任务的开源库,它包含了丰富的函数和工具,可以用于图像处理、模式识别、物体检测等方面。它的跨平台性使得它在许多不同的操作系统上都能够运行,为我们提供了一个强大的工具箱来处理图像数据。

        LBPH算法是一种基于局部二值模式(Local Binary Pattern)的人脸识别方法。它通过将像素点与周围像素点进行比较,提取局部纹理特征,从而实现对人脸的准确识别。相较于其他方法,LBPH算法对于光照变化和部分遮挡具有较强的鲁棒性,因此在实际应用中得到了广泛的使用。

LBPH原理图

人脸识别一共分为四步,本文将按照以下步骤来进行讲解:

  1. 人脸采集
  2. 数据预处理
  3. 特征提取(模型训练)
  4. 匹配识别

实现流程

人脸采集

摄像头采集

首先,通过OpenCV的库打开电脑摄像头,并输入录入信息者的用户名。

# 调用笔记本内置摄像头,参数为0,如果有其他的摄像头可以调整参数为1,2
cap = cv2.VideoCapture(0)
# 调用人脸分类器,要根据实际路径调整3
face_detector = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml') # 输入自己haar模型所在地址
# sampleNum用来计数样本数目
count = 0
# 用户名
name = 'fen' # 输入你的用户名

随后,为新用户创建一个存放照片的文件夹和对应的ID。

# 创建新的用户文件夹和用户ID
def create_incremental_folder():
    folder_name = 1
    root_folder = "./data"

    while True:
        # 检查文件夹是否已存在
        folder_path = os.path.join(root_folder, f"User{folder_name}")
        if not os.path.exists(folder_path):
            os.mkdir(folder_path)
            break
        else:
            folder_name += 1

    return folder_path, folder_name

# 为即将录入的脸标记一个id
folder_path, face_id = create_incremental_folder()

随后,打开摄像头,连续捕捉50张图像,并通过haar人脸识别器框选出人脸位置图像,截取后后保存到对应的文件夹内。

while True:
    # 从摄像头读取图片
    success, img = cap.read()
    # 转为灰度图片,减少程序符合,提高识别度
    if success is True:
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    else:
        break
    # 检测人脸,将每一帧摄像头记录的数据带入OpenCv中,让Classifier判断人脸
    # 其中gray为要检测的灰度图像,1.3为每次图像尺寸减小的比例,5为minNeighbors
    faces = face_detector.detectMultiScale(gray, 1.3, 5)

    # 框选人脸,for循环保证一个能检测的实时动态视频流
    for (x, y, w, h) in faces:
        # xy为左上角的坐标,w为宽,h为高,用rectangle为人脸标记画框
        cv2.rectangle(img, (x, y), (x + w, y + w), (255, 0, 0))
        # 成功框选则样本数增加
        count += 1
        print(count)
        # 保存图像,把灰度图片看成二维数组来检测人脸区域
        # (这里是建立了data的文件夹,当然也可以设置为其他路径或者调用数据库)
        cv2.imwrite("{}/User.".format(folder_path) + str(face_id) + '.' + str(count) + '.jpg', gray[y:y + h, x:x + w])
        # 显示图片
        cv2.imshow('image', img)
        # 保持画面的连续。waitkey方法可以绑定按键保证画面的收放,通过q键退出摄像
    k = cv2.waitKey(1)
    if k == '27':
        break
        # 或者得到800个样本后退出摄像,这里可以根据实际情况修改数据量,实际测试后800张的效果是比较理想的
    elif count >= 50:
        break

图片存储完成后,将用户ID和对应的用户名写入到csv文件中。

def csv_take(face_id, name):
    csv_file = './csv/user.csv'  # CSV 文件路径
    input_data = [['{}'.format(face_id), "{}".format(name)]]  # 输入数据,示例为编号为1的数据
    # 读取 CSV 文件中已有的数据
    existing_data = []
    with open(csv_file, 'r') as file:
        reader = cs.reader(file)
        for row in reader:
            existing_data.append(row)

    # 根据编号找到对应的行索引
    row_index = -1
    for i, row in enumerate(existing_data):
        if i + 1 == int(input_data[0][0]):
            row_index = i
            break

    # 如果找到对应的行索引,则覆盖数据
    if row_index != -1:
        existing_data[row_index] = input_data[0]
    else:
        existing_data.append(input_data[0])

    # 写入更新后的数据到 CSV 文件
    with open(csv_file, 'w', newline='') as file:
        writer = cs.writer(file)
        writer.writerows(existing_data)

    print("数据已成功写入到 CSV 文件!")

照片导入

该方法与摄像头导入类似,首先选择要导入的图片,其次输入用户名。

# 为即将录入的脸标记一个id
folder_path, face_id = create_incremental_folder()
# 指定原始图像路径和目标文件夹路径
image_path ='./image/3.jpg'  # 原始图像路径
output_folder = '{}'.format(folder_path)  # 目标文件夹路径
name = 'You'
face_detector = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')  # 待更改
count = 0

将图片进行灰度化处理后再截取图像,然后再把一张图片复制到20张。

# 扩充数据集到 20 张图像
for i in range(19):
    augmented_image = random_rotate_image(img_tem)
    augmented_image = flip_image(augmented_image)
    augmented_image = adjust_contrast(augmented_image)
    augmented_image = random_scale_image(augmented_image)
    count += 1
    # 保存增强后的图像到目标文件夹
    cv2.imwrite("{}/User.".format(folder_path) + str(face_id) + '.' + '1' + '.' + '.jpg', img_tem)
    cv2.imwrite("{}/User.".format(folder_path) + str(face_id) + '.' + '{}'.format(count+1) + '.' + '.jpg', augmented_image)

然后再对20张图片进行随机的数据增强,经过处理后,就能得到同一个人20张不一样的照片,可以提高模型的拟合度,识别的时候效果更好。随后,将用户ID和用户名存储到CSV文件中,代码同上。至此,数据采集就做完了。

数据预处理

数据增强

其中数据增强包含了四种方法,分别为:

  1. 随机旋转图像
  2. 50%概率触发水平翻转图像
  3. 调整图像对比度
  4. 随机缩放图像
# 数据增强方法1:随机旋转图像
def random_rotate_image(image):
    angle = random.randint(0, 360)  # 随机生成旋转角度
    rows, cols = image.shape
    rotation_matrix = cv2.getRotationMatrix2D((cols/2, rows/2), angle, 1)
    rotated_image = cv2.warpAffine(image, rotation_matrix, (cols, rows))
    return rotated_image

# 数据增强方法2:50% 概率触发水平翻转图像
def flip_image(image):
    if random.random() < 0.5:  # 50% 的概率触发水平翻转
        flipped_image = cv2.flip(image, 1)
    else:
        flipped_image = image
    return flipped_image

# 数据增强方法3:调整图像对比度
def adjust_contrast(image):
    alpha = random.uniform(0.5, 1.5)  # 随机生成对比度调整系数
    adjusted_image = cv2.convertScaleAbs(image, alpha=alpha)
    return adjusted_image

# 数据增强方法4:随机缩放图像
def random_scale_image(image):
    scale_factor = random.uniform(0.5, 1.5)  # 随机生成缩放比例
    rows, cols = image.shape
    scaled_image = cv2.resize(image, (int(cols*scale_factor), int(rows*scale_factor)))
    return scaled_image

转换数据格式

为了能让机器能够处理数据,需要分别将图片和ID处理成一个列表。

# 创建一个函数,用于从数据集文件夹中获取训练图片,并获取id
# 注意图片的命名格式为User.id.sampleNum
def get_images_and_labels(path):
    image_paths = [os.path.join(path, f) for f in os.listdir(path)]
    # 新建连个list用于存放
    face_samples = []
    ids = []

    # 遍历图片路径,导入图片和id添加到list中
    for image_path in image_paths:

        # 通过图片路径将其转换为灰度图片
        img = Image.open(image_path).convert('L')

        # 将图片转化为数组
        img_np = np.array(img, 'uint8')

        if os.path.split(image_path)[-1].split(".")[-1] != 'jpg':
            continue

        # 为了获取id,将图片和路径分裂并获取
        id = int(os.path.split(image_path)[-1].split(".")[1])
        faces = detector.detectMultiScale(img_np)

        # 将获取的图片和id添加到list中
        for (x, y, w, h) in faces:
            face_samples.append(img_np[y:y + h, x:x + w])
            ids.append(id)
    return face_samples, ids

特征提取(模型训练)

由于OpenCV提供了已经封装好的函数,我们直接调用LBPH算法的函数即可,通过将特征值和标签值输入模型之后便可以开始训练了,训练完后的模型会保存在weigths文件夹中。

# 初始化识别的方法
recog = cv2.face.LBPHFaceRecognizer_create()
# 获取图片和ID的列表
faces, ids = get_images_and_labels(path)
# 训练模型
recog.train(faces, np.array(ids))
# 保存模型
recog.save('./weights/model.yml'.format())

匹配识别

再识别界面,我们首先需要加载我们的标签文件,就是一开始说的那个csv文件,这个文件里存放了每个ID对应的用户名,由于模型再识别到人脸后不会直接返回用户名,只会返回一个ID编号,所以我们要通过这个ID来找到对应的用户名并将它写在界面上。

# 读取 CSV 文件中指定列的数据
with open(csv_file, 'r') as file:
    reader = cs.reader(file)
    for row in reader:
        if len(row) > column_index:
            data_array.append(row[column_index])

# 设置好与ID号码对应的用户名,如下,如0对应的就是初始
new_element = 'None'  # 要添加的新元素
data_array.insert(0, new_element)  # 在数组第一位插入新元素
names = data_array

运行程序会打开电脑的摄像头,然后对人脸进行识别,识别到人脸之后会输出用户数据并且将数据写在识别框旁边,代码如下:

while True:
    ret, img = cam.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 识别人脸
    faces = face_cascade.detectMultiScale(
        gray,
        scaleFactor=1.2,
        minNeighbors=5,
        minSize=(int(minW), int(minH))
    )
    # 进行校验
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
        idnum, confidence = recognizer.predict(gray[y:y + h, x:x + w])

        # 计算出一个检验结果
        if confidence < 100:
            idum = names[idnum]
            confidence = "{0}%".format(round(confidence))
        else:
            idum = "unknown"
            confidence = "{0}%".format(round(100 - confidence))

        # 输出检验结果以及用户名
        cv2img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # cv2和PIL中颜色的hex码的储存顺序不同
        pilimg = Image.fromarray(cv2img)
        draw = ImageDraw.Draw(pilimg)  # 图片上打印
        font = ImageFont.truetype("./simhei.ttf", 30, encoding="utf-8")  # 参数1:字体文件路径,参数2:字体大小
        draw.text((x + 5, y - 30), str(idum), (255, 0, 0), font=font)
        draw.text((x + 5, y + h - 30), str(confidence), (255, 0, 0), font=font)
        img = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)  # PIL图片转cv2 图片

        # 展示结果
        cv2.imshow('camera', img)
        k = cv2.waitKey(int(1000 / fps))
        if k == 27:
            break

也可以在此处输入视频的地址,对视频进行实时人脸识别。

# 打开视频文件或者使用摄像头
video = 0
# video = './video/test1.mp4'

效果实测(别骂了别骂了,由于博主使用电脑摄像头对着手机拍的,所以很糊Q_Q)

运行环境

以下是我的python版本以及所用的主要库的版本,文件里会有我用到的所有库,可以直接安装。

python==3.9.13
opencv-contrib-python==4.7.0.72
opencv-python==4.7.0.72
numpy==1.22.0
Pillow==9.5.0

资料链接

百度网盘链接: https://pan.baidu.com/s/1FRTg95SRnOuL2NFnaPlWfA?pwd=brxf 提取码: brxf 

感谢您阅读本文,如果对您有帮助希望能点个赞点个收藏,期待在未来的技术发展中与您共同前行!

【计算机视觉40例】案例29:LBPH人脸识别 《计算机视觉40例——从入门到深度学习(OpenCV-Python)》在介绍Python基础、OpenCV基础、计算机视觉理论基础、深度学习理论的基础上,介绍了计算机视觉领域内具有代表性的40个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。 ... 阅读详情

相关推荐

基于Python+OpenCV使用LBPH算法的简单人脸识别

一、项目背景与意义人脸识别技术作为计算机视觉领域的重要分支,在安防、金融、社交等多个领域有着广泛的应用。LBPH(Local Binary Patterns Histogram,局部二值模式直方图)算法以其对纹理特征的强大提取能力和对光照变化的鲁棒性,在人脸识别领域备受青睐。本项目旨在利用Python编程语言结合OpenCV库,实现基于LBPH算法的人脸识别系统,为用户提供高效、准确的人脸识别服务[1][2][3]。二、技术实现环境搭建:安装Python编程环境,确保版本与OpenCV库兼容。

2301_79809972的博客 938

OpenCV人脸识别之LBPH算法(局部二值模式方法)

人脸识别LBPH算法 人脸识别是指将一个需要识别的人脸和人脸库中的某个人脸对应起来(类似于指纹识别),目的是完成识别功能,该术语需要和人脸检测进行区分,人脸检测是在一张图片中把人脸定位出来,完成的是搜寻的功能。 1.LBP算子 原始的LBP算子定义为在3*3的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于或等于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数即LBP...

qq_39629280的博客 1万+

基于Python使用Haar进行人脸级联检测和LBPH人脸识别器的人脸识别

一、项目背景与意义人脸识别技术已成为现代计算机视觉领域的重要研究方向之一,广泛应用于安全监控、身份验证、人机交互等多个领域。本项目旨在结合Haar级联分类器进行人脸检测和LBPH(Local Binary Patterns Histograms)算法进行人脸识别,构建一个高效、准确的人脸识别系统。二、技术原理Haar级联分类器:原理:Haar级联分类器是一种基于Haar特征和AdaBoost算法的机器学习算法,特别适用于人脸检测等目标检测任务。

Q1744828575的博客 1230

LBPH——图像的LBP特征向量

紧接上一篇未完成的工作,实现LBPH!!! 介绍其实上篇博客已经介绍了一些LBP的实现: https://blog.youkuaiyun.com/zqx951102/article/details/100713614 LBPH的概念这篇博客有介绍, https://blog.youkuaiyun.com/guo1988kui/article/details/79976202 LBPH,Local Binary Patte...

张齐贤的博客 6948

OpenCV 3基于LBPH的人脸识别Python代码实战

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它拥有超过2500个优化算法,这些算法涵盖多个领域,包括图像处理、物体识别、运动分析和深度学习等。自从2000年由英特尔公司发起,OpenCV已经发展成为一个由全球计算机视觉专家广泛参与的开源项目。OpenCV被广泛应用于计算机视觉领域,因为它提供了一个强大的框架,不仅支持实时图像处理,还能够支持复杂的三维重建、视频分析、特征提取、图像分类等功能。

weixin_35307279的博客 1186

人脸识别(基于OpenCv 完整代码)

https://blog.youkuaiyun.com/weixin_46291251/article/details/117996591 文章对应的代码以及所需要的依赖文件

基于OpenCV提供的人脸识别算法LBPH实现人脸识别

本项目通过学习人脸识别技术的实现原理,实现采集人脸图像、训练人脸模式和人脸识别。

lyx4949的博客 1万+

用OpenPose进行单个或多个人体姿态估计

在计算机视觉中,人体姿态估计(关键点检测)是一个很常见的问题,在体育健身、动作采集、3D试衣、舆情监测等领域具有广阔的应用前景,本文要使用的检测方法就是基于OpenPose的人体姿态估计方法。 一、OpenPose简介 OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络(CNN)和监督学习(SL)并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿...

weixin_42709563的博客 8404

基于OpenCv的人脸识别(Python完整代码)

目前人脸识别有很多较为成熟的方法,这里调用OpenCv库,而OpenCV又提供了三种人脸识别方法,分别是LBPH方法、EigenFishfaces方法、Fisherfaces方法。本文采用的是LBPH(Local Binary Patterns Histogram,局部二值模式直方图)方法。opencv是一个开源的的跨平台计算机视觉库,内部实现了图像处理和计算机视觉方面的很多通用算法,对于python而言,在引用opencv库的时候需要写为import cv2。其中,cv2是opencv的C++命名空间名称

Cheney ' blog 20万+

SDR实战(五)-AD9361多芯片同步技术详解

本文详细解析了AD9361多芯片同步技术在SDR系统中的实现方法,涵盖硬件连接方案、软件配置流程及同步验证技巧。通过等长时钟走线、低抖动时钟分配和精确的SYNC信号控制,解决MIMO系统中多AD9361芯片的时钟同步难题,提升系统性能与稳定性。

weixin_30952535的博客 762

抖音小游戏上架避坑指南:从软著申请到ICP备案全流程解析

本文详细解析了抖音小游戏上架前必须完成的软著申请和ICP备案全流程,提供了清晰的时间线规划与实操避坑指南。文章重点阐述了个人与企业备案的区别、材料准备要点以及平台审核常见问题,旨在帮助独立开发者和小团队高效、合规地完成游戏上架,避免在行政流程中延误项目。

weixin_29276847的博客 1563

OpenCV--基于python人脸LBPH识别

前言:因为我要做选修课的关于ai的项目,所以整个代码其实是摘录自hwtl0703598这个csdn博客主的python人脸识别源码,不过也在调试的过程过发现了那位博客主的一些代码的问题,并改善了,我会在整篇文章后端指出改正,基本上是可以配好环境后直接使用。 简要概述之LBPH是什么? LBPH(Local Binary PatternsHistograms)局部二进制编码直方图,建立在LBPH基础之上的人脸识别法基本思想如下:首先以每个像素为中心,判断与周围像素灰度值大小关系,对其进行二进制编码.

weixin_54627824的博客 2万+

mysql9.0windows安装

将这里的位置修改为你刚刚创建并复制data目录的地址即可,win11的系统使用vscode修改之后,会让你确认开启更高权限以进行保存,比较方便,window10不需要确认,修改后可以直接保存。:在修改之前,最好将下图文件进行备份,将原始的文件保存好一份,以防更改了配置之后,导致mysql服务报错,无法启动,备份好的话直接将有问题的配置文件给替换就可以,无需重新安装一次mySql。双击下载的msi文件进行安装。安装有问题的,可以直接进行卸载,新本的mySql会将注册表中的数据自动进行清除,还是很方便的。

m0_74824123的博客 6448

基于OpenCV的人脸识别:LBPH算法

这个系统使用了OpenCV的LBPH(Local Binary Patterns Histograms)人脸识别算法,通过训练已知的人脸图像,然后对新的图像进行预测识别。通过这个简单的示例,我们了解了如何使用OpenCV实现基础的人脸识别功能。虽然这个系统比较简单,但它展示了人脸识别的基本原理和工作流程。随着样本数量的增加和算法的优化,系统的识别准确率可以进一步提高。希望这篇博客对你理解人脸识别技术有所帮助!如果你有任何问题或建议,欢迎在评论区留言。万事胜意,得偿所愿!加油各位!!!🚀🚀🚀。

zdx2585503940的博客 2554

从零构建知识图谱:本体工程与知识建模实战指南

本文是一份从零构建知识图谱的实战指南,重点阐述了知识建模与本体工程的核心地位。文章详细介绍了如何使用Protégé工具进行本体设计,包括定义领域、复用现有本体、构建类层次与属性约束,并讲解了如何利用D2RQ工具将关系数据库数据转换为RDF三元组,最终通过Apache Jena Fuseki搭建SPARQL端点进行知识查询与推理,让知识图谱真正“活”起来。

weixin_29057695的博客 572

【用unity实现100个游戏之19】制作一个3D传送门游戏,实现类似鬼打墙,迷宫,镜子,任意门效果(附项目源码)

本文介绍了Unity中实现传送门效果的完整流程。通过第一人称角色控制器实现移动,使用PortalView脚本和自定义Unlit Shader渲染门内场景,巧妙利用相机位置和旋转同步实现动态视角。重点解决了近裁剪面问题,确保远距离渲染正确性。最后通过PortalTeleporter脚本实现传送功能,检测碰撞并计算相对位置进行瞬移。该方法无需复杂插件,代码简洁高效,适用于各类3D场景中的传送门实现。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

opencv项目_人脸识别_LBPH_python

Looul Biay Patem Hstogam简称LBPH,翻译过来就是局部二值模式直方图,这是一种基于局部二值模式算法,善于捕获局部纹理特征。开发者需要通过三个方法来完成人脸识别操作。(I)通过0v2 Ree. LERCRCe. Ctato方法创建LBPH人脸识别器,其语法如下,(2)创建完识别器对象之后,需要通过对象的train() 方法来训练识别器。建议每个人都给出2张以上的照片作为训练样本。

HYSliuliuliu的博客 1万+

华为OD机试双机位C卷:挑选宝石 (C/C++/Python/JAVA/JS/GO)

华为OD机试双机位C卷 挑选宝石,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试-挑选宝石,华为OD机考-挑选宝石。

qq_45776114的博客 1500

LBPH人脸识别---OpenCV-Python开发指南(42)

目录前言LBPH方法的基本原理LBPH实现步骤 前言 前篇博文我们讲解了人脸检测的基本操作。但人脸检测只是人脸识别领域的一个非常小的分支。一般情况下,使用人脸识别,都是比对对应的人脸的判断是否是本人,或者是否是某个人。所以,我们需要进一步学习人脸识别的相关知识。 在OpenCV中,它提供了3种人脸识别的方法,分别为:LBPH方法,EigenFishfaces方法,Fisherfaces方法。本篇,将讲解LBPH方法进行人脸识别操作。 LBPH方法的基本原理 LBPH(Local Binary Pattern

李元静 1万+

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

Robot_PLC_HMI_Automation 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

基于Python+opencv实现的人脸识别系统

前言:因为python课设我选择的是关于人脸识别的这个课题,然后做出来也是根据一些博客主们的经验,其中自己也踩了一些坑,然后自己也想写一个关于这个课题的一些总结,讲一下在其中存在的一些问题,以及怎样解决的办法。...

weixin_49591989的博客 3470

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OpenCV中LBPH人脸识别器识别人脸实战(附Python源码)

OpenCV中LBPH人脸识别器识别人脸实战(附Python源码)

showswoller的博客 2610

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

用LBPH、FisherFaces与EignFaces算法进行人脸识别

人脸识别就是找到一个可以表征每个人脸特征的模型,在进行识别是先提取当人脸的特征,再从已有的特征集这种找到最为接近的人脸样本,从而得到当前人脸的标签。 在如今的世界,人脸识别也变得越来越重要,应用越来越广泛,比如人脸识别可用于身份认证、摄影、支付、视频等领域。 在Opencv中提供了LPBH、EigenFishfaces和FisherFace三种人脸识别方法。 一、LBPH算法 LBPH所使用的模型基于LBP算法,其基本原理是将图像(灰度图,如果是彩色图则先转为灰度图)中某个像素点的值与其最临近的3×3邻域8

qq_46067306的博客 4548

python学opencv|读取图像(七十五)人脸识别:Fisherfaces算法和LBPH算法

掌握了使用python+opencv实现了使用Fisherfaces算法和LBPH算法进行人脸识别的技巧。

专注python+工程实践的热心婶子 1339

OpenCV-Python实战(19)——LBPH人脸识别

本文通过学习LBPH人脸识别算法,简要了解人脸识别技术的原理,实现人脸采集、训练人脸模型实现人脸识别。

2201_75538245的博客 1238

【人脸识别】ssd + opencv Eigenfaces 和 LBPH算法进行人脸监测和识别

其实不一定使用ssd,fasterRcnn, yolov 都可以~所以假设我们已经实现了这个监测模型。那么我们直接进入识别环境。

weixin_40293999的博客 2115
下一篇: 基于卷积神经网络的表情识别系统(附Python完整代码)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值