Computer vision 什么&x2019;人脸检测中的去饱和和均衡点是什么?

Computer vision 什么&x2019;人脸检测中的去饱和和均衡点是什么?,computer-vision,face-detection,Computer Vision,Face Detection,当我播放人脸检测代码时,我感到有些困惑。当我评论这两句话时: //cvtColor( frame, frame_gray, CV_BGR2GRAY ); //equalizeHist( frame_gray, frame_gray ); 结果仍然是一样的,这意味着Opencv(detectMultiScale)仍然可以成功地找到人脸。我在想,把彩色图像转换成灰度图像,然后得到灰度图像的直方图有什么意义 我附上部分代码如下: while (cvWaitKey(10) < 0) { Mat

当我播放人脸检测代码时,我感到有些困惑。当我评论这两句话时:

//cvtColor( frame, frame_gray, CV_BGR2GRAY );
//equalizeHist( frame_gray, frame_gray ); 
结果仍然是一样的,这意味着Opencv(detectMultiScale)仍然可以成功地找到人脸。我在想,把彩色图像转换成灰度图像,然后得到灰度图像的直方图有什么意义

我附上部分代码如下:

while (cvWaitKey(10) < 0)
{
Mat frame = cvQueryFrame( capture ); // get the next frame of video
cvtColor( frame, frame_gray, CV_BGR2GRAY );
equalizeHist( frame_gray, frame_gray ); 
face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) ); // Detect faces
for( int i = 0; i < faces.size(); i++ ) // for each face found
{
Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 ); // location of this face
ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 ); // draw ellipse around this face}
imshow( "faces", frame);
}
/////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
while(cvWaitKey(10)<0)
{
Mat frame=cvQueryFrame(捕获);//获取视频的下一帧
CVT颜色(框架、框架灰、CV灰);
均衡器历史(帧灰,帧灰);
face_cascade.Detect多尺度(frame_gray,faces,1.1,2,0 | CV_HAAR_SCALE_IMAGE,Size(30,30));//检测人脸
对于(int i=0;i
或:

while(cvWaitKey(10)<0)
{
Mat frame=cvQueryFrame(捕获);//获取视频的下一帧
//CVT颜色(框架、框架灰、CV灰);
//均衡器历史(帧灰,帧灰);
face_cascade.detectMultiScale(帧,面,1.1,2,0 | CV_HAAR_SCALE_图像,大小(30,30));//检测面
对于(int i=0;i
去饱和的目的是减少数据量,因为算法在没有颜色的情况下工作。均衡的要点是补偿照明变化


您可以在此处找到更多信息:

如果您在此处使用库/api/平台适当标记您的问题,您可能会得到更好的回答。如果您使用的是OpenCV库,请在您的问题上加上标签。为了澄清,请正确缩进您的代码-这将使人们更容易回答您的问题。我会建议自己进行编辑,但我不确定“绘制椭圆…”注释末尾的
}
是否应该在新行上。此外,如果您同时使用语言和您正在使用的特定检测框架对问题进行标记,也会提高问题的可视性。
while (cvWaitKey(10) < 0)
{
Mat frame = cvQueryFrame( capture ); // get the next frame of video
//cvtColor( frame, frame_gray, CV_BGR2GRAY );
//equalizeHist( frame_gray, frame_gray ); 
face_cascade.detectMultiScale( frame, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) ); // Detect faces
for( int i = 0; i < faces.size(); i++ ) // for each face found
{
Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 ); // location of this face
ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 ); // draw ellipse around this face}
imshow( "faces", frame);
}
//////////////////////////////////////////////