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("檢測到人臉!");********************************
//在此加入人臉識別程序
}
不出意外的話朋友你的代碼裏面應該有此部分內容吧,要判斷檢測到人臉的話就是在將矩形人臉標記轉換成圓形標記的部分哦。
意思就是說有人臉被標記出來了,那麼肯定就存在人臉了哦!
}
- 提問者評價
-
起初就是不知道在哪