基于海康摄像头进行人脸识别
硬件设备:使用的普通的海康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
使用本文章或代码还请声明。
基于海康摄像头进行人脸识别相关推荐
- 关于海康摄像头的摘要认证
最近在做一个项目时候要用到摄像头人脸抓拍,人脸识别等功能,原本使用海康的SDK就可以解决的,但是我们项目是在arm平台下开发的,而海康的SDK不支持arm平台,无奈联系的海康的技术支持,他们提供的了一 ...
- 关于海康摄像头的摘要认证(转载)
转载自:关于海康摄像头的摘要认证_y673533511的博客-CSDN博客 关于海康 摄像头的摘要认证 y673533511 2019-03-11 10:30:01 4132 正在上传-重新上传取消 ...
- FPGA驱动摄像头实现人脸识别(基于肤色)
FPGA驱动摄像头实现人脸识别(基于肤色) 验证平台:黑金AX309 OV5640 时至今日图像处理已经得到了广泛应用,今天我们来讲一讲利用FPGA结合摄像头来实现一个简单的人脸识别(当然误检率很高, ...
- 基于python调用摄像头进行人脸识别,支持多张人脸同时识别
介绍 调用摄像头进行人脸识别, 支持多张人脸同时识别; 摄像头人脸录入 请不要离摄像头过近, 人脸超出摄像头范围时会有 "OUT OF RANGE" 提醒 提取特征建立人脸数据库 ...
- python鱼眼图像识别_一种基于鱼眼摄像头的人脸识别锁以及识别方法与流程
本发明涉及人脸识别领域,特别涉及一种基于鱼眼摄像头的人脸识别锁. 背景技术: 人脸识别具有用在门锁上存在一些不足.例如,门锁一般装在门上,其高度在安装时已经固定,针对不同身高的用户来说可能造成人脸图像 ...
- 基于海康SDK开发文档分析+云台控制实现+经典案例
基于海康SDK开发文档分析+云台控制实现+经典案例 上一篇:海康威视java开发+demo运行+调用dll动态库坑 一.准备 海康的SDK下载 https://www.hikvision.com/cn ...
- Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别
搭建环境 opencv官网下载windows安装包 https://opencv.org/releases/ 选择最新版4.1.1 下载完成后是一个opencv-4.1.1-vc14_vc15.exe ...
- 调用远程摄像头进行人脸识别_工地安全:AI如何实现安全帽检测与人脸识别?...
安全生产一直是施工生产中很重要的一部分,只有保障了员工的安全,才能保证企业的利益.安全帽作为保护.防护的重要防范手段,一直是各大企业要求员工佩戴的,可还是发生了各种由于未佩戴安全帽导致的安全事故. 通 ...
- python人脸识别毕业设计-用python3.6在电脑上实现用摄像头来人脸识别源程序
# -*- coding: UTF-8 -*- import face_recognition import cv2 import os # 这是一个超级简单(但很慢)的例子,在你的网络摄像头上实时运 ...
- 调用远程摄像头进行人脸识别_人脸识别技术植入手机APP
随着物联网技术的日益成熟,我们看到已经有很多APP用到了人脸识别技术,特别是金融和互联网领域的应用纷纷加入了人脸识别.表示,人脸识别技术基于人的脸部特征信息进行身份识别,为互联网金融等行业解决在线多维 ...
最新文章
- 跨平台移动应用开发迎来“大杀器”,Xamarin.Essentials正式版发布
- gprof + kprof + gprof2dot (性能 与 函数调用图)-
- 成功的自动化测试实施的5大支柱(译)
- linux的有趣命令,Linux有趣小命令之艺术字
- Java 18 新功能介绍
- Springmvc 关于静态资源转发的问题解决
- 圣诞节海报设计需要的手写字体素材
- 修改kafka java环境_单节点Kafka、Zookeeper安装、启用过程(Windows OS环境)
- Java 常用对象-StringBuffer类
- IDAutomation的条形码字体和工具集TrueType Font Package
- forward(转发)与redirect(重定向)的区别
- hive难点以及例子SXT
- 计算机如何放置桌面图标,电脑桌面图标怎么随意放置(电脑桌面归纳小窗口)...
- 齐二TK6916/20/26/32系列数控落地铣镗床简介1
- 法规标准-E-NCAP评测标准解析(2023版)
- 给初学者:用VB写外挂 ———— 实战四:雷电3修改器
- 计算机怎么安装俩个操作系统,想安装双操作系统,原来是win7,想再安装一个win10,两个系统能共用电脑里的软件吗?...
- Limited Data Rolling Bearing Fault Diagnosis With Few-Shot Learning(基于小样本学习的有限数据滚动轴承故障诊断)
- SIMPLIS仿真软件5-仿真电路规则
- android 辐射动画_Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)