知用网
第二套高阶模板 · 更大气的阅读体验

用Python脚本轻松实现人脸识别,小白也能上手

发布时间:2026-01-15 15:01:35 阅读:279 次

家里摄像头拍了一堆视频,想找某个人的画面翻得头疼?或者想做个自动打卡系统,又觉得开发太难?其实用Python写个识别人脸的小脚本,几十行代码就能搞定。

准备工具:OpenCV + Python

大多数人用的都是OpenCV这个库,它支持Python调用,安装也简单。打开命令行,输入下面这句就行:

pip install opencv-python

装好之后,就可以开始写识别代码了。OpenCV自带训练好的人脸模型文件,叫haarcascade_frontalface_default.xml,可以直接拿来用。

写个最简单的识别脚本

比如你想从一张照片里圈出人脸,代码是这样的:

import cv2

# 加载人脸检测模型
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")

# 读取图片
img = cv2.imread("family.jpg")

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.1, 4)

# 在脸上画框
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)

# 显示结果
cv2.imshow("Detected Faces", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行后,所有检测到的人脸都会被蓝色方框圈出来。你可以把family.jpg换成自己照片试试,连爸妈的脸都能认出来。

实时摄像头识别也不难

想用笔记本摄像头实时识别人脸?改几行代码就行:

import cv2

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.1, 4)

    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)

    cv2.imshow("Face Cam", frame)

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

cap.release()
cv2.destroyAllWindows()

运行后打开摄像头,人一露脸就自动画框。公司门口放一台树莓派跑这脚本,员工进门自动记录时间,比打卡机还省事。

注意点别踩坑

光线太暗或者侧脸角度太大,识别率会下降。还有,模型对戴墨镜、口罩的人脸不太敏感。如果想提高准确度,可以换用更高级的模型,比如DNN模块里的ResNet,但对电脑配置要求也高些。

这整套脚本在普通笔记本上跑完全没问题,写一次能用在各种场景:相册分类、访客记录、甚至小孩玩具箱加个“只认脸开锁”功能,玩着玩着就把编程学会了。