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);
效果展示
热门推荐
孕期被恶意调岗,能说“不”吗?
房间太潮湿,如何有效除湿?
提高师生互动关系:预防校园欺凌的关键
英特尔CPU选购与换货指南:避免陷阱,合理选择高性价比型号
痛风一般在什么部位痛
高尿酸知识科普
如何解决Win10录屏无法录制游戏的问题?
2025年BBA心态变了:奔驰GLE将国产,宝马推大圆柱电池
考研专业课的参考书有哪些推荐?
结婚生子遥不可及的时代,经济负担导致少子化的现实
DCS = PLC + 组态?浅谈DCS系统和PLC系统
压疮的分期及临床表现
EDT和EDP香水区别详解:浓度、留香和使用场合的选择指南
最快燃脂波比跳
屏南陈氏:自古英雄出少年
机电一体化技术教学改革方法探索
美国犯罪问题深度解析:不同族裔犯罪状况与影响因素
黄磷:性质、用途与应急处理
BIM技术在施工模拟中的应用:从模型创建到4D进度模拟
江汉区委书记李湛: 因地制宜,“闯关”全域数字化转型
荷花生长环境条件及特点(水生植物之王的生命之源)
英雄联盟手游泰坦出装推荐:控制流辅助的完美装备搭配
《僧伽吒经》全4卷 白话译文
《僧伽吒经》全4卷 原文+语音+译文
香砂六君丸跟金匮肾气丸能一起吃吗
双眼皮手术后如何处理眼干症状
做双眼皮手术后如何处理下眼皮肿
最新脑死亡的诊断标准出炉!世界脑死亡专家共识
辣木叶茶的功效与作用禁忌,全面解析辣木叶茶的多重功效与使用注意事项
Windows 11有哪些隐藏功能