百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python摄像头识别检测已有照片人脸

off999 2025-05-05 18:06 26 浏览 0 评论

需要安装的库:dlib==19.24.99,face_recognition,opencv等,python环境3.9.19

以识别2个人脸为例,代码如下

import cv2
import face_recognition

# 1. 加载目标人脸照片和提取特征
known_face_encodings = []
known_face_names = []

# 加载 mwj 的照片
mwj_image = face_recognition.load_image_file("lucy.jpg")
mwj_encoding = face_recognition.face_encodings(mwj_image)[0]
known_face_encodings.append(mwj_encoding)
known_face_names.append("lucy")

# 加载 sky 的照片
sky_image = face_recognition.load_image_file("lena.jpg")
sky_encoding = face_recognition.face_encodings(sky_image)[0]
known_face_encodings.append(sky_encoding)
known_face_names.append("lena")

# 2. 打开视频
video_capture = cv2.VideoCapture(0)  # 替换为 0 使用摄像头
# video_capture = cv2.VideoCapture("video.mp4")  # 替换为 0 使用摄像头

while video_capture.isOpened():
    ret, frame = video_capture.read()
    if not ret:
        break

    # 3. 在视频帧中检测人脸
    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)  # 转为 RGB
    face_locations = face_recognition.face_locations(rgb_frame)
    face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)

    for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
        # 4. 将当前人脸与目标人脸进行比较
        matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
        name = "Unknown"

        # 如果匹配到人脸,标记名字
        if True in matches:
            match_index = matches.index(True)
            name = known_face_names[match_index]

        # 5. 在视频帧中标记人脸
        cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
        cv2.putText(frame, name, (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)

    # 显示视频帧
    cv2.imshow("Video", frame)

    # 按 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
video_capture.release()
cv2.destroyAllWindows()


如果要检测2人以上的人脸可以使用以下方式实现,代码目录新建一个文件夹faces,里面放命名好人名的头像照片,这样不管3张5张还是更多都可以检测了

import cv2
import face_recognition
import os

# 1. 加载目标人脸照片和提取特征
known_face_encodings = []
known_face_names = []

# 设置存放人脸照片的目录
faces_directory = "faces"  # 替换为你的目录路径

# 遍历目录中的所有图片文件
for filename in os.listdir(faces_directory):
    if filename.endswith(".jpg") or filename.endswith(".png"):
        # 加载图片并提取特征
        image_path = os.path.join(faces_directory, filename)
        image = face_recognition.load_image_file(image_path)
        encoding = face_recognition.face_encodings(image)[0]

        # 将特征和名字添加到列表
        known_face_encodings.append(encoding)
        name = os.path.splitext(filename)[0]  # 使用文件名作为名字
        known_face_names.append(name)

print(f"已加载以下人脸: {known_face_names}")

# 2. 打开视频
video_capture = cv2.VideoCapture(0)  # 使用摄像头
# video_capture = cv2.VideoCapture("video.mp4")  # 使用视频文件

while video_capture.isOpened():
    ret, frame = video_capture.read()
    if not ret:
        break

    # 3. 在视频帧中检测人脸
    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)  # 转为 RGB
    face_locations = face_recognition.face_locations(rgb_frame)
    face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)

    for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
        # 4. 将当前人脸与目标人脸进行比较
        matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
        name = "Unknown"

        # 如果匹配到人脸,标记名字
        if True in matches:
            match_index = matches.index(True)
            name = known_face_names[match_index]

        # 5. 在视频帧中标记人脸
        cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)
        cv2.putText(frame, name, (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)

    # 显示视频帧
    cv2.imshow("Video", frame)

    # 按 'q' 键退出
    # if cv2.waitKey(1) & 0xFF == ord('q'):
    # 按 'Esc' 键退出
    if cv2.waitKey(1) & 0xFF == 27:  # 27 是 Esc 键的键值
        break

# 释放资源
video_capture.release()
cv2.destroyAllWindows()


相关推荐

txt免费全本阅读器旧版本(全本免费txt小说app旧版)

是的,有许多可以自动翻页的txt小说阅读器,以下是一些常用的阅读器:1.CoolReader:一个免费、开源的阅读器,支持多种格式,包括txt、fb2、epub等,支持自定义字体、字号、背景颜色等...

赚钱的游戏软件一天赚200元(可以赚钱的游戏一天赚100~200元! 视频)
赚钱的游戏软件一天赚200元(可以赚钱的游戏一天赚100~200元! 视频)

都是骗子注册会员就不能用了,一分也提不出来了今日头条赚金币,男女老少都爱玩。每天只要稍微动一动手指,至少能提现0.5元,偷偷地说一声:“比头条辛辛苦苦码字剪辑赚钱可快多啦!”不信你就来试一试吧。赚得200金币,确实很少能赚到,因为很少有整十...

2026-01-27 09:51 off999

网页版在线游戏(红色警戒网页版在线游戏)

棋牌类休闲网络游戏网络对战类游戏角色扮演类大型网上游戏(有以上三种类型游戏)具体分为:动作游戏冒险游戏益智游戏卡片游戏  格斗游戏恋爱游戏养成类游戏  桌面游戏  音乐游戏体育游戏战略游戏射击游...

学术论文翻译网站(学术论文翻译软件哪个好)
  • 学术论文翻译网站(学术论文翻译软件哪个好)
  • 学术论文翻译网站(学术论文翻译软件哪个好)
  • 学术论文翻译网站(学术论文翻译软件哪个好)
  • 学术论文翻译网站(学术论文翻译软件哪个好)
搜狗搜狗输入法下载(搜狗输入法下载官方下载)

微信切换搜狗输入法的方法:1、打开手机的设置功能,在设置界面里将列表滑到最下方,然后点击最下方的“系统”。2、在系统的界面里,点击“语言和输入法”。3、在跳转进入的界面的键盘和输入法的下方,点击“默认...

免费视频剪辑制作软件(免费使用的视频剪辑软件)

非常荣幸回答你的问题,我自己也在做搞笑类视频。也和你一样,先期也是四处找素材。1.b站,我以前经常在那里找,里面会有一些很好的素材,我以前会引用一些油管的视频。都是别人从油管搬运到b站的,我再剪辑一部...

德语翻译(德语翻译拍照)

德语的英文是Germany,而德国的英文是German。Germany还有德国的,德国人的意思。举例:IhaveaGermancar.-我有一部德国(的)车。Hecomesfrom...

win10激活工具免费版(win10激活工具哪个好用)
  • win10激活工具免费版(win10激活工具哪个好用)
  • win10激活工具免费版(win10激活工具哪个好用)
  • win10激活工具免费版(win10激活工具哪个好用)
  • win10激活工具免费版(win10激活工具哪个好用)
安装下载浏览器(浏览器官方正版下载)
  • 安装下载浏览器(浏览器官方正版下载)
  • 安装下载浏览器(浏览器官方正版下载)
  • 安装下载浏览器(浏览器官方正版下载)
  • 安装下载浏览器(浏览器官方正版下载)
免费主题壁纸大全(免费主题壁纸大全下载图片怎么删除不了)

在oppo手机的主题商店里面下载免费的主题都是可以更换锁屏壁纸的只要我们在oppo主题商店里面搜索免费主题,然后下载主题之后再应用主题的时候,我们选择锁屏壁纸,这样我们在应用的时候,下载的免费主题,...

励销云一年收费标准(励销云官网)

励销云成立于2014年,位于陆家嘴软件园,经过多年的发展,公司已经达到600多人的规模,并完成了B+轮融资(腾讯);励销云通过人工智能(AI)、大数据等新一代技术,提供从“找客—筛客—管客”的一体化...

向日葵视频(向日葵视频色板安卓下载app)

1.登录向日葵客户端后,在菜单的设置中勾选“开启屏幕录像”;勾选成功后,当有远程控制时,所有的电脑操作记录、聊天记录、上网记录等都会被录制下来,并储存在相应的目录下。2.如果想要查看屏幕录像,只需点...

iso镜像文件下载(iso镜像文件下载后打不开)

vmwareiso镜像文件可以从VMware官网下载。具体的下载步骤如下:1.打开VMware官网,进入产品下载页面。2.在产品下载页面,选择需要下载的VMware产品,比如VMwareWork...

iso镜像文件能直接安装吗(iso镜像文件安装工具)

不能。1、iso和gho文件都不是可执行文件,不能直接安装,需要用其它程序打开。iso文件是光盘镜像文件,一般需要专用工具软件才能操作,比如UltraISO、WinISO、DaemonTools等,...

安卓市场应用软件有哪些(安卓应用市场有哪几个)
  • 安卓市场应用软件有哪些(安卓应用市场有哪几个)
  • 安卓市场应用软件有哪些(安卓应用市场有哪几个)
  • 安卓市场应用软件有哪些(安卓应用市场有哪几个)
  • 安卓市场应用软件有哪些(安卓应用市场有哪几个)

取消回复欢迎 发表评论: