C++ cvHaarDetectObjects是如何工作的?
我正在努力学习cvHaarDetectObjects是如何工作的。。。 我无法想象它是如何工作的。。。如何计算积分图像并找到一张脸 我们在面部区域放置一个矩形。。。我们如何找到这个地区C++ cvHaarDetectObjects是如何工作的?,c++,opencv,face-detection,C++,Opencv,Face Detection,我正在努力学习cvHaarDetectObjects是如何工作的。。。 我无法想象它是如何工作的。。。如何计算积分图像并找到一张脸 我们在面部区域放置一个矩形。。。我们如何找到这个地区 if (faces) { for(int i = 0; i < faces->total; ++i) { CvPoint point1, point2; CvRect* rectangle = (CvRect*)cvGetSeqElem(faces, i
if (faces)
{
for(int i = 0; i < faces->total; ++i)
{
CvPoint point1, point2;
CvRect* rectangle = (CvRect*)cvGetSeqElem(faces, i);
point1.x = rectangle->x;
point2.x = (rectangle->x + rectangle->width);
point1.y = rectangle->y;
point2.y = (rectangle->y + rectangle->height);
cvRectangle(frame, point1, point2, CV_RGB(255,0,0));...
if(面)
{
对于(int i=0;itotal;++i)
{
点1,点2;
CvRect*矩形=(CvRect*)cvGetSeqElem(面,i);
点1.x=矩形->x;
点2.x=(矩形->x+矩形->宽度);
点1.y=矩形->y;
点2.y=(矩形->y+矩形->高度);
cvRectangle(帧,点1,点2,CV_RGB(255,0,0));。。。
在OpenCV库中,矩形由两个角组成,因此
point1.x = rectangle->x;
point2.x = (rectangle->x + rectangle->width);
point1.y = rectangle->y;
point2.y = (rectangle->y + rectangle->height);
从
获取检测面的位置,它使用这些x和y坐标,用它们组成所需的两个品脱(上面的代码),然后用点作为参数绘制矩形:
cvRectangle(frame, point1, point2, CV_RGB(255,0,0));
阅读这个维基页面,
有一种著名的算法叫做Viola-Jones方法:
希望它能帮助您理解它是如何工作的。这只是关于矩形。识别“面”是指xml格式的haar文件,其中包含多个注释(面特征、距离、形状),因此它可以在图像(静止图像、视频帧等)中找到面。
cvRectangle(frame, point1, point2, CV_RGB(255,0,0));