OpenCV学习:检测图片中是否有人脸
创作时间:
作者:
@小白创作中心
OpenCV学习:检测图片中是否有人脸
引用
CSDN
1.
https://blog.csdn.net/briant_ccj/article/details/85467730
本文将介绍如何使用OpenCV库函数检测图片中是否有人脸。通过简单的几行代码,你将能够实现基本的人脸检测功能。
检测原理
- 通过
CascadeClassifier::load()调用已经训练好的haar+adaboost人脸检测模型,参数就是模型的文件路径。
- 作为初学者,自然是调用OpenCV自带的已经训练好的人脸检测模型。OpenCV提供了4种haar的人脸检测模型。
- 这里调用的是
haarcascade_frontalface_alt.xml。从这里可以看出一个训练好的人脸检测模型是一个xml文件。
- 通过调用
CascadeClassifier::detectMultiScale检测人脸的位置。
待解决的问题
作为初学者,目前仍有下面几个问题待解决:
- 这个模型是怎么训练出来的?
- 从图二可以看到检测出来的效果不是很好的,这个是模型的问题?还是程序的问题?该怎么改进?
代码实现
Mat image = imread("..\\..\\image\\Lena.png", IMREAD_GRAYSCALE);
CascadeClassifier cascade;
double time = (double)getTickCount();
if (!cascade.load("../data/haarcascades/haarcascade_frontalface_alt.xml"))
{
printf("Cascade.load error\r\n");
}
vector<Rect> faces(0);
cascade.detectMultiScale(image, faces, 1.1, 2, 0, Size(30, 30));
if (faces.size() > 0)
{
for (size_t i = 0; i < faces.size(); i++)
{
rectangle(image, faces[i], Scalar(150, 0, 0), 3, 8, 0);
}
}
else
{
printf("No Face\r\n");
}
time = (double)getTickCount() - time;
printf("time used %f", time * 1000 / getTickFrequency());
imshow("image", image);
效果展示
热门推荐
土地性质划拨转出让的需要缴纳契税吗?
医疗责任险包括哪些?赔偿标准详解
数据分析的系统化流程:从获取到应用的全面解析与实践指南
黑龙江省黑河市开启今冬寒区试车季
如何分析股票交易的活跃度?这些活跃度对市场表现有何影响?
“小猫需接种疫苗几次?答疑解惑,护喵健康!”
14K金和黄金的区别是什么 14K金和黄金的区别在哪里?
房贷LPR利率加点计算方法及更新频率解析
国产8.6毫米通用机枪:从美军经验到中国创新
大米与日本:从历史到餐桌的那些故事
可转债在债券市场中的作用是什么?这种作用如何影响投资回报?
重磅!三明医改5年全国覆盖,普通康复治疗师年薪能拿21万!
奋进的河北|全省可再生能源装机占比近七成
揭秘大枣泡茶的多种益处:滋养身体与心灵的神奇作用
企业拆迁补偿款要交什么税
绿玻璃和白玻璃的区别、价格及哪个更贵
医生解答:拉伸运动能否缓解颈椎痛?
一年之计在于春,春季养生四大要点全解析
民族文化对民歌演唱的影响
张雪峰谈轮机工程专业就业前景、考研方向、优势与劣势
煎中药时哪些药要包煎哪些要另煎
更换路由器后网络打印机无法连接?这份故障排除指南请收好
土地性质划拨转出让的需要缴纳契税吗?
红斑狼疮患者35.4%睡不好,原因竟然是这个
网文改编观察丨《难哄》:一流的氛围营造,却徒有其表?
大学学分加权平均绩点怎么算
老年人口干舌燥怎么办?医生给出专业建议
计算机硬件基础及冯诺依曼结构
2025年全国硕士研究生调剂时间及官网入口
法务部门去老家调取家庭档案