在之前的工作中,我们实现了从摄像头采集图像的功能,那么接下来我们尝试进行人脸和人眼的检测和识别。在图像的预处理和图像参数设置上,花费了不少的时间,现在给出对于优化这个算法的一些看法。
1、图像预处理
在图像的与处理上,为了消除光线、背景等的影响,先做图像的灰度化,平滑处理,均衡化,然后进行处理。
cvCvtColor(img2, img3, CV_BGR2GRAY);//灰度化
cvSmooth(img3, img3, CV_GAUSSIAN, 5, 5, 0, 0);//平滑处理
cvEqualizeHist(img3, img3);//均衡化
2、检测部分参数设置
在进行检测的时候,各种参数的设置至关重要。参数设置的不正确非常影响处理速度,也会影响检测的准确性。
CvSeq *faces = cvHaarDetectObjects(img3, cascade_f, storage1, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING, cvSize(40, 40));
CvSeq *eyes = cvHaarDetectObjects(img3, cascade_e, storage, 1.2,3, CV_HAAR_DO_CANNY_PRUNING, cvSize(10, 10));
在此处,缩放速度设置为1.2,降低检测的进度来提高检测的效率,以便在视频中实现流畅地处理。
最小方格数量设置为2为常用数据,也可以增大这个数据来提高检测精度,但是可能会导致有部分目标不能被检测到。