请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 3750|回复: 2

求助:人脸检测

[复制链接]

9

主题

0

好友

75

积分

注册会员

Rank: 2

发表于 2018-4-11 20:51:04 |显示全部楼层
import cv2

face_patterns = cv2.CascadeClassifier('D:\Learning_Software\Opencv\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml')  #加载分类器 cv2.CascadeClassifie
'''
CascadeClassifier是Opencv中做人脸检测时候的一个级联分类器,该类中封装的是目标检测机制即滑动窗口机制+级联分类器的方式。
数据结构包括Data和FeatureEvaluator两个主要部分。Data中存储的是从训练获得的xml文件中载入的分类器数据;而FeatureEvaluator中是关于特征的载入、存储和计算。
这里采用的训练文件是OpenCV中默认提供的haarcascade_frontalface_default.xml
'''

# face_patterns.load('D:\Learning_Software\Opencv\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml')

sample_image = cv2.imread('2.jpg')     #加载目标图片 imread

faces = face_patterns.detectMultiScale(sample_image,scaleFactor=1.1,minNeighbors=5,minSize=(100, 100))  # 多尺度检测 detectMultiScale
'''
调用 CascadeClassifier 中的调detectMultiScale函数进行多尺度检测,多尺度检测中会调用单尺度的方法detectSingleScale。
参数说明:

scaleFactor 是 图像的缩放因子
minNeighbors 为每一个级联矩形应该保留的邻近个数,可以理解为一个人周边有几个人脸
minSize 是检测窗口的大小


参数都是可以针对图片进行调整的,处理结果返回一个人脸的  矩形对象列表。
'''


for (x, y, w, h) in faces:
    (sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2)
'''
为每个人脸画一个框

循环读取人脸的矩形对象列表,获得人脸矩形的坐标和宽高, 然后在原图片中画出该矩形框,调用的是OpenCV的rectangle 方法,其中矩形框的颜色等是可调整的。
'''

cv2.imwrite('2_detected.png', sample_image);     #保存检测后的结果


我用一张图片可以检测并且有矩形框,但是换了几张都不行了 是怎么回事?

回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-4-11 21:50:29 |显示全部楼层
opencv默认模型对人脸要求很高,识别率不高,尤其侧脸不行
当然也可能是你图片的格式不支持
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

9

主题

0

好友

75

积分

注册会员

Rank: 2

发表于 2018-4-12 09:39:50 |显示全部楼层
crossin先生 发表于 2018-4-11 21:50
opencv默认模型对人脸要求很高,识别率不高,尤其侧脸不行
当然也可能是你图片的格式不支持 ...

我用的是正脸啊,而且图片的格式也没啥问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-3-29 15:35 , Processed in 0.015519 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部