人脸识别(走偏)和人脸采集——OpenCV踩坑(带练手图片)

本文介绍了OpenCV中用于人脸识别的cv2.CascadeClassifier,包括Haar特征、级联分类器的使用及常见错误处理。同时,讲解了cv2.VideoCapture()进行视频采集时的参数设置、警告处理及帧读取操作,提供了代码示例和实际应用中的效果展示。
摘要由CSDN通过智能技术生成
欢迎关注,敬请点赞!

cv2.CascadeClassifier()级联分类器

CascadeClassifier()是Opencv中做人脸检测时的一个级联分类器。

Haar特征

返回顶部
Haar特征是一种反映图像的灰度变化的,像素分模块求差值的一种特征。
它分为四类:边缘特征、线性特征、中心特征和对角线特征。
用黑白两种矩形框组合成特征模板,在特征模板内用【黑色矩形像素和】减去【白色矩形像素和】来表示这个模版的特征值。
脸部的一些特征能由矩形模块差值特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。
但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述在特定方向(水平、垂直、对角)上有明显像素模块梯度变化的图像结构。

常见报错error: (-215:Assertion failed) !empty()

找不到训练好的haarcascade_eye.xml分类器,如下:
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'
可能报错的代码:

eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')

可以消除报错的代码,注意使用绝对路径(路径中的双斜杠\\)

# 注意使用绝对路径及路径中的双斜杠
path_e = "C:\\Users\\13721\\AppData\\Roaming\\Python\\Python37\\site-packages\\cv2\\data\\haarcascade_eye.xml"
eye_cascade = cv2.CascadeClassifier(path_e)

另一方法:将haarcascade_eye.xml与主程序放在同一目录下

人脸识别(眼睛和嘴巴)代码示例

返回顶部
注:黄渤头像是节日气氛道具,邓超头像识别走偏,团队图片和twins组合图片识别良好。

import numpy as np
import cv2


# 运行之前,检查cascade文件路径是否在相应的目录下
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')  # 与主程序在同一目录。
# eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')  # 会报错,改绝对路径
# 注意路径中的双斜杠
path_e = "C:\\Users\\13721\\AppData\\Roaming\\Python\\Python37\\site-packages\\cv2\\data\\haarcascade_eye.xml"
eye_cascade = cv2.CascadeClassifier(path_e)

# 读取图像
# img = cv2.imread('team.jpg')  # 团队
# img = cv2.imread('deng.jpg')  # 邓超
img = cv2.imread('twins.jpg')  # twins组合
# img = cv2.imread('huang.jpg')  # 黄渤人脸假面
gray = cv2.cvtColor(img, cv2.COLOR_BG
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值