opencv怎样判断一副图片上是否有人脸

我现在在做一个关于人脸识别的东东,首先要先检测出人脸再做后续。现在利用opencv自带的分类器已经CvHaarClassifierCascade已经能够从摄像头输入的视频... 我现在在做一个关于人脸识别的东东,首先要先检测出人脸再做后续。现在利用opencv自带的分类器已经CvHaarClassifierCascade已经能够从摄像头输入的视频中找出人脸区域了,但是我现在想知道怎么判断对于输入的每一帧图像中是否检测出人脸。
答得好的还有高分悬赏,非常感谢……
还要说明一下,是通过程序知道是否检测到人脸而不是说眼睛看到人脸区域被标记等等的哦……
展开
 我来答
jiejieyuchaoya
2011-05-05 · 超过13用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:0
展开全部
CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage,1.1, 2, 0,cvSize(100, 60) /*级联分类器训练中采用的检测目标的尺寸*/);//检测人脸返回矩形人脸
/*使用针对某目标物体训练的级联分类器在图像中找到包含目标物体的矩形区域,并且将这些区域作为一序列的矩形框返回。
函数以不同比例大小的扫描窗口对图像进行几次搜索(察看cvSetImagesForHaarClassifierCascade)。
每次都要对图像中的这些重叠区域利用cvRunHaarClassifierCascade进行检测。*/
//t = (double)cvGetTickCount() - t;

//printf( "detection time = %gms\n", t/((double)cvGetTickFrequency()*1000.) );

for( i = 0; i < (faces ? faces->total : 0); i++ )//找到矩形中心把矩形转换成圆形

{

CvRect* r = (CvRect*)cvGetSeqElem( faces, i );/*直接访问序列中的元素 */

CvPoint center;//OpenCV的基本数据类型之一,表示一个坐标为整数的二维点

int radius;

center.x = cvRound((r->x + r->width*0.5)*scale);

center.y = cvRound((r->y + r->height*0.5)*scale);

radius = cvRound((r->width + r->height)*0.25*scale);//对一个double型的数进行四舍五入,并返回一个整型数!

cvCircle( img, center, radius, colors[i%8], 3, 8, 0 );/*绘制圆形*/

*****************printf("检测到人脸!");********************************

//在此加入人脸识别程序

}
不出意外的话朋友你的代码里面应该有此部分内容吧,要判断检测到人脸的话就是在将矩形人脸标记转换成圆形标记的部分哦。
意思就是说有人脸被标记出来了,那么肯定就存在人脸了哦!

}
深圳量子动力
2024-10-28 广告
在量子动力(深圳)计算机科技有限公司,我们致力于将前沿技术融入安防与智能识别领域。摄像头人脸捕捉技术,依托深度学习算法与高效图像处理能力,能够在复杂环境中迅速锁定并精准捕捉人脸信息。这一技术不仅提升了监控系统的智能化水平,还在公共安全、门禁... 点击进入详情页
本回答由深圳量子动力提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式