使用haar-cascades从人脸中检测眼睛和嘴巴我从人脸中提取了眼睛和嘴巴,但是想从眼睛和嘴巴中提取情绪。但是,嘴巴没有被正确检测到..这是我的代码..privatevoidtimer1_Tick(objectsender,EventArgse){using(ImagenextFrame=cap.QueryFrame()){if(nextFrame!=null){//只有一个通道(灰度),因此索引为零//varfaces=nextFrame.DetectHaarCascade(haar)[0];图片grayframe=nextFrame.Convert();Imagegray=nextFrame.Convert();图片gray1=nextFrame.Convert();varfaces=grayframe.DetectHaarCascade(haar,1.4,4,HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,newSize(nextFrame.Width/8,nextFrame.Height/8))[0];MCvAvgComp[][]eyes=gray.DetectHaarCascade(eye,1.1,1,Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,newSize(20,20));gray.ROI=Rectangle.Empty;MCvAvgComp[][]mouthsDetected=gray.DetectHaarCascade(mouth,1.1,10,Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,newSize(20,20));gray1.ROI=Rectangle.Empty;foreach(MCvAvgCompmouthsnapinmouthsDetected[0]){矩形mouthRect=mouthsnap.rect;//mouthRect.Off设置(f.rect.X,f.rect.Y);nextFrame.Draw(mouthRect,newBgr(Color.Red),2);detectedmouth=mouthRect;}foreach(MCvAvgCompeyesnapineyes[0]){矩形eyeRect=eyesnap.rect;//mouthRect.Offset(f.rect.X,f.rect.Y);nextFrame.Draw(eyeRect,newBgr(Color.Green),2);}foreach(varfaceinfaces){nextFrame.Draw(face.rect,newBgr(Color.LightGreen),3);facesnap=face.rect;}pictureBox1.Image=nextFrame.ToBitmap();}}}privatevoidForm1_Load(objectsender,EventArgse){cap=newCapture(0);//调整路径以找到您的xml//haar=newHaarCascade("haarcascade_frontalface_alt2.xml");haar=newHaarCascade("haarcascade_frontalface_alt_tree.xml");mouth=newHaarCascade("Mouth.xml");eye=newHaarCascade("haarcascade_eye_tree_eyeglasses.xml");}privatevoidbutton1_Click(objectsender,EventArgse){Imagesnap=pictureBox1.Image;snap.Save("c:\snapshot.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);pictureBox2.Image=捕捉;图片eBox3.Image=cropImage(snap,facesnap);pictureBox4.Image=cropImage(snap,detectedmouth);}privatestaticImagecropImage(Imageimg,Rectanglecroparea){BitmapbmpImage=newBitmap(img);位图bmpCrop=bmpImage.Clone(croparea,bmpImage.PixelFormat);返回(图像)(bmpCrop);请帮助我使用c#进行情绪检测和更好的嘴巴检测我将尝试在面部矩形中找到嘴巴而不是检查孔图像。varfaces=grayframe.DetectHaarCascade(haar,1.4,4,HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,newSize(nextFrame.Width/8,nextFrame.Height/8))[0];foreach(varfinfaces){//用蓝色绘制在第0个(灰色)通道中检测到的人脸image.Draw(f.rect,newBgr(Color.Blue),2);//设置人脸感兴趣区域gray.ROI=f.rect;varmouthsDetected=gray.DetectHaarCascade(mouth,1.1,10,Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,newSize(20,20));gray.ROI=Rectangle.Empty;foreach(varminmouthsDetected[0]){矩形mouthRect=m.rect;mouthRect.Offset(f.rect.X,f.rect.Y);image.Draw(mouthRect,newBgr(Color.Red),2);我将面部区域划分为2个矩形顶部和底部...并将底部矩形应用于灰色.ROI。有效。。下面是两个矩形的代码。。以上是C#学习教程:使用haar-cascades从人脸检测眼睛和嘴巴,如果对大家有用,需要了解的就把全部内容分享出来关于C#希望大家多多关注教程——inthalfheight=facesnap.Height/2;intstart=facesnap.X;intstart1=facesnap.Y;矩形顶部=新矩形(开始、开始1、facesnap.Width、halfheight);intstart2=top.Bottom;矩形底部=新矩形(开始,开始2,facesnap.Width,halfheight);nextFrame.Draw(bottom,newBgr(Color.Yellow),2);//设置人脸的感兴趣区域gray.ROI=bottom;MCvAvgComp[][]mouthsDetected=gray.DetectHaarCascade(mouth,1.1,10,Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,newSize(20,20));如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
