【Python】调用opencv识别图片人脸位置

Python代码,实现调用opencv识别图片人脸位置。

最初代码只能读取非中文路径图片文件,可通过打补丁实现读取非中文路径图片,打补丁完整代码见附加下载

一、检测效果

当人脸比较多的时候,有人脸会不被识别的情况。

二、代码展示(中文路径无法读取)

借助AI创建代码,可以打开非中文路径的图片文件,调用opencv库标注人脸位置,并导出标注人脸的图片。

python 复制代码
import cv2
import tkinter as tk
from tkinter import filedialog

# 1. 选择图片
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename(
    title="选择图片",
    filetypes=[("图片文件", "*.jpg *.jpeg *.png *.bmp")]
)

if not file_path:
    print("未选择图片")
    exit()

# 2. 读取图片
img = cv2.imread(file_path)
if img is None:
    print("图片读取失败")
    exit()

# 3. 加载人脸检测器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

# 4. 转换为灰度图并检测人脸
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# 5. 标注人脸位置
annotated_img = img.copy()
for (x, y, w, h) in faces:
    cv2.rectangle(annotated_img, (x, y), (x + w, y + h), (0, 255, 0), 2)
    cv2.putText(annotated_img, f"Face {len(faces)}", (x, y - 10),
                cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2)

print(f"检测到 {len(faces)} 张人脸")

# 6. 显示图片
cv2.imshow("人脸检测", annotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 7. 导出标注图片
output_path = file_path.rsplit('.', 1)[0] + '_detected.jpg'
cv2.imwrite(output_path, annotated_img)
print(f"已导出: {output_path}")

三、代码补丁(中文路径读取)

python 复制代码
import numpy as np
#可读取中文路径的图片
def imread_chinese(path, flags=cv2.IMREAD_COLOR):
    """
    支持中文路径的图像读取函数
    """
    # 1. 以二进制模式读取文件内容
    with open(path, 'rb') as f:
        image_data = f.read()
    
    # 2. 将字节流转换为 NumPy 数组
    image_array = np.frombuffer(image_data, dtype=np.uint8)
    
    # 3. 使用 imdecode 解码为图像矩阵
    image = cv2.imdecode(image_array, flags)
    
    return image
img = imread_chinese(file_path)	#可读取中文路径图片
相关推荐
FPGA信号处理39 分钟前
【模式识别】第三节课:分类误差的来源与线性分类器
人工智能·分类·数据挖掘
hrrrrxeeeee40 分钟前
电商从业者AI技能提升:证书选择与商品、客服、运营场景落地
人工智能
东莞市云毅网络有限公司5 小时前
AI 引用句逐条回指原文:让回答可回溯的校验实现
python·数据清洗·rag·企业知识库·文档解析
小和尚同志6 小时前
1.8k star 的开源 token 使用量监控神器— TokenTracker
人工智能·ai编程
极客 - L U7 小时前
神经网络 - 激活函数、损失函数、优化器
人工智能·深度学习·神经网络
数字融合7 小时前
透明化视频三维矿山井下照明重建技术
人工智能·python·数码相机
yi0117 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
xiangzhihong87 小时前
创之星花店多端业务闭环拆解
人工智能
奈落248 小时前
AI 编程从助手到 Agent:基于两份资料看哪些环节可以交出去,哪些必须自己攥住
大数据·人工智能
Joker可视化开发平台8 小时前
AI短剧接棒真人剧:开机量跌七成,普通人进场窗口在收窄
大数据·人工智能