opencv怎样判断一副图片上是否有人脸我现在在做一个关于人脸识别的东东,首先要先检测出人脸再做后续.现在利用opencv自带的分类器已经CvHaarClassifierCascade已经能够从摄像头输入的视频中找出
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/29 02:00:44
![opencv怎样判断一副图片上是否有人脸我现在在做一个关于人脸识别的东东,首先要先检测出人脸再做后续.现在利用opencv自带的分类器已经CvHaarClassifierCascade已经能够从摄像头输入的视频中找出](/uploads/image/z/9722559-39-9.jpg?t=opencv%E6%80%8E%E6%A0%B7%E5%88%A4%E6%96%AD%E4%B8%80%E5%89%AF%E5%9B%BE%E7%89%87%E4%B8%8A%E6%98%AF%E5%90%A6%E6%9C%89%E4%BA%BA%E8%84%B8%E6%88%91%E7%8E%B0%E5%9C%A8%E5%9C%A8%E5%81%9A%E4%B8%80%E4%B8%AA%E5%85%B3%E4%BA%8E%E4%BA%BA%E8%84%B8%E8%AF%86%E5%88%AB%E7%9A%84%E4%B8%9C%E4%B8%9C%2C%E9%A6%96%E5%85%88%E8%A6%81%E5%85%88%E6%A3%80%E6%B5%8B%E5%87%BA%E4%BA%BA%E8%84%B8%E5%86%8D%E5%81%9A%E5%90%8E%E7%BB%AD.%E7%8E%B0%E5%9C%A8%E5%88%A9%E7%94%A8opencv%E8%87%AA%E5%B8%A6%E7%9A%84%E5%88%86%E7%B1%BB%E5%99%A8%E5%B7%B2%E7%BB%8FCvHaarClassifierCascade%E5%B7%B2%E7%BB%8F%E8%83%BD%E5%A4%9F%E4%BB%8E%E6%91%84%E5%83%8F%E5%A4%B4%E8%BE%93%E5%85%A5%E7%9A%84%E8%A7%86%E9%A2%91%E4%B8%AD%E6%89%BE%E5%87%BA)
opencv怎样判断一副图片上是否有人脸我现在在做一个关于人脸识别的东东,首先要先检测出人脸再做后续.现在利用opencv自带的分类器已经CvHaarClassifierCascade已经能够从摄像头输入的视频中找出
opencv怎样判断一副图片上是否有人脸
我现在在做一个关于人脸识别的东东,首先要先检测出人脸再做后续.现在利用opencv自带的分类器已经CvHaarClassifierCascade已经能够从摄像头输入的视频中找出人脸区域了,但是我现在想知道怎么判断对于输入的每一帧图像中是否检测出人脸.
答得好的还有高分悬赏,非常感谢……
还要说明一下,是通过程序知道是否检测到人脸而不是说眼睛看到人脸区域被标记等等的哦……
opencv怎样判断一副图片上是否有人脸我现在在做一个关于人脸识别的东东,首先要先检测出人脸再做后续.现在利用opencv自带的分类器已经CvHaarClassifierCascade已经能够从摄像头输入的视频中找出
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 );/*绘制圆形*/
//在此加入人脸识别程序
}
不出意外的话朋友你的代码里面应该有此部分内容吧,要判断检测到人脸的话就是在将矩形人脸标记转换成圆形标记的部分哦.
意思就是说有人脸被标记出来了,那么肯定就存在人脸了哦!
}