Python3.7+OpenCV3 人脸检测中的那些坑

本文介绍了使用Python3.7和OpenCV3进行人脸检测时遇到的问题,包括编码模式错误、分类器路径问题、函数名变化及运算符差异等,并提供了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、先看程序

此程序实现的图像中的人脸检测,不同的图像检测的精度可能略有差异。

# coding=gbk
import cv2

# 待检测的图片路径
# 获取训练好的人脸的参数数据,这里直接从GitHub上使用默认值
pathf='C:\\Users\Derek\AppData\Local\Programs\Python\Python37\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml'

face_cascade = cv2.CascadeClassifier(pathf)


# 读取图片
image = cv2.imread("D://Python/Picture/Kobe.jpg")
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

# 探测图片中的人脸
faces = face_cascade.detectMultiScale(
    gray,
    scaleFactor = 1.15,
    minNeighbors = 5,
    minSize = (5,5),
    flags = cv2.CASCADE_SCALE_IMAGE
)

print("发现{0}个人脸!".format(len(faces)))

for(x,y,w,h) in faces:
    # cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2)
    cv2.circle(image,((x+x+w)//2,(y+y+h)//2),w//2,(0,255,0),2)
    
cv2.imshow("Find Faces!",image)
cv2.waitKey(0)

二、检测结果:

在这里插入图片描述

三、踩坑合集

  1. 坑一:编码模式
    如果不写# coding=gbk报错

Non-UTF-8 code starting with ‘\xb4’ in file D:/Python/Project/opencvtest.py on line 5, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
在这里插入图片描述
2. 坑二:直接写分类器报错
直接写

face_detector = cv.CascadeClassifier("haarcascade_frontalface_alt_tree.xml")

会报错。
在这里插入图片描述
为了解决这个问题,需要在前面用绝对路径写出来,也就是你在python中的安装的位置

pathf='C:\\Users\Derek\AppData\Local\Programs\Python\Python37\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml'

face_cascade = cv2.CascadeClassifier(pathf)
  1. 坑三:cv2和cv3中函数名不同

CV2中的

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

flags = cv2.cv.CV_HAAR_SCALE_IMAGE

在CV3中换了名称:

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

flags = cv2.CASCADE_SCALE_IMAGE

4.坑四:运算符

cv2.circle(image,((x+x+w)/2,(y+y+h)/2),w/2,(0,255,0),2)

应在/后再加一条/

cv2.circle(image,((x+x+w)//2,(y+y+h)//2),w//2,(0,255,0),2)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值