硬件设备:使用的普通的海康ip摄像头。这里摄像头只用来获取视频流,人脸识别部分用代码处理。

代码部分:使用到了Python库opencv(用来获取把摄像头的视频流拿到代码中处理)。face_recognition 人脸识别库。

我们用的是海康摄像头通过局域网ip访问,当然也适用于其他型号摄像头,(更换source既rtsp地址)也适用于视频的人脸识别,(把source改为 视频文件的路径)。

海康ip摄像头的rtsp地址 :

rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream

username: 用户名。例如admin。
password: 密码。例如12345。
ip: 为设备IP。例如 192.0.0.64。
port: 端口号默认为554,若为默认可不填写。
codec:有h264、MPEG-4、mpeg4这几种。
channel: 通道号,起始为1。例如通道1,则为ch1。
subtype: 码流类型,主码流为main,辅码流为sub。参考

人脸识别模块使用的是python的一个人脸识别库,face_recognition

github地址 https://github.com/ageitgey/face_recognition

代码中把已知人物信息照片的路径放到filepath即可,注意如果不是jpg格式的需要在代码中更改成其他格式的。

另外如果名字是中文的还需要再进行修改,可以参考我博客中另一篇文章https://blog.csdn.net/Nirvana_6174/article/details/81411842

# -*- coding: utf-8 -*-
# 摄像头头像识别
import face_recognition
import cv2from os import listdirsource = "×××××" #摄像头的rtsp地址
cam = cv2.VideoCapture(source)filepath='../face_photos'  #已知人脸图片文件夹 注意 如果会员图片后缀不是jpg 需要进行修改
filename_list=listdir(filepath)
known_face_names=[]
known_face_encodings=[]
a=0for filename in filename_list:#依次读入列表中的内容a+=1if filename.endswith('jpg'):# 后缀名'jpg'匹对known_face_names.append(filename[:-4])#把文件名字的后四位.jpg去掉获取人名file_str=filepath+'/'+filenamea_images=face_recognition.load_image_file(file_str)#print(file_str)a_face_encoding = face_recognition.face_encodings(a_images)[0]known_face_encodings.append(a_face_encoding)
print(known_face_names,a)face_locations = []
face_encodings = []
face_names = []
process_this_frame = Truewhile(cam.isOpened()):# 读取摄像头画面ret, frame = cam.read()if not ret:#等同于 if ret is not nonebreak# 改变摄像头图像的大小,图像小,所做的计算就少small_frame = cv2.resize(frame, (0, 0), fx=0.33, fy=0.33)# opencv的图像是BGR格式的,而我们需要是的RGB格式的,因此需要进行一个转换。rgb_small_frame = small_frame[:, :, ::-1]# Only process every other frame of video to save timeif process_this_frame:# 根据encoding来判断是不是同一个人,是就输出true,不是为flaseface_locations = face_recognition.face_locations(rgb_small_frame)face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)face_names = []for face_encoding in face_encodings:# 默认为unknownmatches = face_recognition.compare_faces(known_face_encodings, face_encoding,tolerance=0.48)#阈值太低容易造成无法成功识别人脸,太高容易造成人脸识别混淆 默认阈值tolerance为0.6#print(matches)name = "Unknown"# if match[0]:#     name = "michong"# If a match was found in known_face_encodings, just use the first one.if True in matches:first_match_index = matches.index(True)name = known_face_names[first_match_index]face_names.append(name)process_this_frame = not process_this_frame# 将捕捉到的人脸显示出来for (top, right, bottom, left), name in zip(face_locations, face_names):# Scale back up face locations since the frame we detected in was scaled to 1/4 size#由于我们检测到的帧被缩放到1/4大小,所以要缩小面位置top *= 3right *= 3bottom *= 3left *= 3# 矩形框cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)#引入ft2中的字体#加上标签cv2.rectangle(frame, (left, bottom - 20), (right, bottom), (0, 0, 255), cv2.FILLED)font = cv2.FONT_HERSHEY_DUPLEXcv2.putText(frame, name, (left + 6, bottom - 6), font, 0.8, (255, 255, 255), 1)#frame = ft.draw_text(frame,(left + 6, bottom - 6), name, 1.0, (255, 255, 255))#def draw_text(self, image, pos, text, text_size, text_color)# Displaycv2.imshow('monitor', frame)if cv2.waitKey(1) & 0xFF == 27:breakcam.release()
cv2.destroyAllWindows()

在运行的时候会出现卡顿的状况,需要对海康摄像头配置进行改进,适当的降低清晰度码流等。

这是我的配置

看个人情况,这些慢慢调试就好。

汉字标框问题已解决,可以到我博客里面看,以及使用该模块做的智能签到系统,和各个人脸识别模块的代码。

其他人脸识别模块介绍   https://blog.csdn.net/Nirvana_6174/article/details/89599441

如有问题,或有什么建议可加群:894243022或发邮箱1639206518@qq.com

使用本文章或代码还请声明。

基于海康摄像头进行人脸识别相关推荐

  1. 关于海康摄像头的摘要认证

    最近在做一个项目时候要用到摄像头人脸抓拍,人脸识别等功能,原本使用海康的SDK就可以解决的,但是我们项目是在arm平台下开发的,而海康的SDK不支持arm平台,无奈联系的海康的技术支持,他们提供的了一 ...

  2. 关于海康摄像头的摘要认证(转载)

    转载自:关于海康摄像头的摘要认证_y673533511的博客-CSDN博客 关于海康 摄像头的摘要认证 y673533511 2019-03-11 10:30:01 4132  正在上传-重新上传取消 ...

  3. FPGA驱动摄像头实现人脸识别(基于肤色)

    FPGA驱动摄像头实现人脸识别(基于肤色) 验证平台:黑金AX309 OV5640 时至今日图像处理已经得到了广泛应用,今天我们来讲一讲利用FPGA结合摄像头来实现一个简单的人脸识别(当然误检率很高, ...

  4. 基于python调用摄像头进行人脸识别,支持多张人脸同时识别

    介绍 调用摄像头进行人脸识别, 支持多张人脸同时识别; 摄像头人脸录入 请不要离摄像头过近, 人脸超出摄像头范围时会有 "OUT OF RANGE" 提醒 提取特征建立人脸数据库 ...

  5. python鱼眼图像识别_一种基于鱼眼摄像头的人脸识别锁以及识别方法与流程

    本发明涉及人脸识别领域,特别涉及一种基于鱼眼摄像头的人脸识别锁. 背景技术: 人脸识别具有用在门锁上存在一些不足.例如,门锁一般装在门上,其高度在安装时已经固定,针对不同身高的用户来说可能造成人脸图像 ...

  6. 基于海康SDK开发文档分析+云台控制实现+经典案例

    基于海康SDK开发文档分析+云台控制实现+经典案例 上一篇:海康威视java开发+demo运行+调用dll动态库坑 一.准备 海康的SDK下载 https://www.hikvision.com/cn ...

  7. Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别

    搭建环境 opencv官网下载windows安装包 https://opencv.org/releases/ 选择最新版4.1.1 下载完成后是一个opencv-4.1.1-vc14_vc15.exe ...

  8. 调用远程摄像头进行人脸识别_工地安全:AI如何实现安全帽检测与人脸识别?...

    安全生产一直是施工生产中很重要的一部分,只有保障了员工的安全,才能保证企业的利益.安全帽作为保护.防护的重要防范手段,一直是各大企业要求员工佩戴的,可还是发生了各种由于未佩戴安全帽导致的安全事故. 通 ...

  9. python人脸识别毕业设计-用python3.6在电脑上实现用摄像头来人脸识别源程序

    # -*- coding: UTF-8 -*- import face_recognition import cv2 import os # 这是一个超级简单(但很慢)的例子,在你的网络摄像头上实时运 ...

  10. 调用远程摄像头进行人脸识别_人脸识别技术植入手机APP

    随着物联网技术的日益成熟,我们看到已经有很多APP用到了人脸识别技术,特别是金融和互联网领域的应用纷纷加入了人脸识别.表示,人脸识别技术基于人的脸部特征信息进行身份识别,为互联网金融等行业解决在线多维 ...

最新文章

  1. 跨平台移动应用开发迎来“大杀器”,Xamarin.Essentials正式版发布
  2. gprof + kprof + gprof2dot (性能 与 函数调用图)-
  3. 成功的自动化测试实施的5大支柱(译)
  4. linux的有趣命令,Linux有趣小命令之艺术字
  5. Java 18 新功能介绍
  6. Springmvc 关于静态资源转发的问题解决
  7. 圣诞节海报设计需要的手写字体素材
  8. 修改kafka java环境_单节点Kafka、Zookeeper安装、启用过程(Windows OS环境)
  9. Java 常用对象-StringBuffer类
  10. IDAutomation的条形码字体和工具集TrueType Font Package
  11. forward(转发)与redirect(重定向)的区别
  12. hive难点以及例子SXT
  13. 计算机如何放置桌面图标,电脑桌面图标怎么随意放置(电脑桌面归纳小窗口)...
  14. 齐二TK6916/20/26/32系列数控落地铣镗床简介1
  15. 法规标准-E-NCAP评测标准解析(2023版)
  16. 给初学者:用VB写外挂 ———— 实战四:雷电3修改器
  17. 计算机怎么安装俩个操作系统,想安装双操作系统,原来是win7,想再安装一个win10,两个系统能共用电脑里的软件吗?...
  18. Limited Data Rolling Bearing Fault Diagnosis With Few-Shot Learning(基于小样本学习的有限数据滚动轴承故障诊断)
  19. SIMPLIS仿真软件5-仿真电路规则
  20. android 辐射动画_Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)

热门文章

  1. WPS Office 2005个人版试用
  2. JSP教程 JSP教程 JSP教程 JSP教程 JSP教程 JSP教程
  3. VS2013 由Unicode字符集切换为多字节字符集后编译报错
  4. OC容器——图书馆 .h 文件
  5. js中进行字符串替换的方法
  6. Loki搭建日志收集系统
  7. 【数据库】SQL语句之修改语句(INSERT,UPDATE,DELETE)
  8. Java 实现 POS 打印机无驱打印
  9. PDF文件不能打印的五种解决方案
  10. 制造业生产规划与排程的福音—APS系统