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);
效果展示
热门推荐
寸和英寸的区别!一英寸等于几寸呢?度量单位的趣味课堂,带你一探究竟!
智能辅助鞋垫:足底压力分布优化系统重新定义行走舒适度
三个幽默鬼故事:恐怖与欢乐交织的奇妙体验
动力电池纳入年检必检项目!明年3月实行,终于不用担心自燃了?
肺癌脑转移头痛怎么办?专业医生给出权威解答
在 Android 和 iOS 上阻止垃圾电话的完整指南
如何辨别静脉与动脉
如何辨别静脉与动脉
手机相册整理秘籍:实用技巧与推荐工具大揭秘
十二生肖谜语大全及答案
钱逊:见义勇为的真谛与《论语》智慧
车位租赁合同订立与审查指南
麦粒肿饮食注意事项
梨花声音教育气息控制技巧
数字化转型中的人工智能如何应用
数据驱动决策,开启数字化转型新航程
谁知道海狮,海豹,海象的区别?
跑步也能练肌肉!高强度有氧锻炼效果佳
曹操的本姓是曹,还是夏侯?遗传基因检测给出了答案
技术方案怎么写
如何在房地产领域中做出全面的市场行情分析?这些分析如何指导购房决策?
客服机器人聊天功能有哪些?客服常见问题解决方案来了
多运动一小时,“孕”气提升7%!备孕人群运动方面有何建议?
国产飞行手榴弹:可视小型游荡弹药,有着装备和使用前景
肖伟代表:中药经典名方要“唤醒”更要“焕新”
激光投影和全息投影的区别是什么
月季花怎么养才能更旺盛
中医是如何调理近视的
宇宙速度的推导
什么是腻子?腻子的定义与作用。