编程语言
首页 > 编程语言> > c#-如何在Emgu CV中执行模板匹配

c#-如何在Emgu CV中执行模板匹配

作者:互联网

先生,

我是Emgu CV的新手,正在制作人脸识别软件,我能够使用HaarCascade xml分类器检测人脸,但是我在下一步中无法识别人脸,任何人都请告诉我如何使用MatchTemplate功能…

我在互联网上找到了此代码

Image<Gray, Byte> templateImage = new Image<Gray, Byte>(bmpSnip);
Image<Gray, float> resultImage = sourceImage.MatchTemplate(templateImage,Emgu.CV.CvEnum.TM_TYPE.CV_TM_CCOEFF_NORMED);

float[,,] matches = resultImage.Data;
for (int x = 0; x < matches.GetLength(1); x++)
{
for (int y = 0; y < matches.GetLength(0); y++)
{
double matchScore = matches[y, x, 0];
if (matchScore > 0.75)
{
Rectangle rect = new Rectangle(new Point(x,y), new Size(1, 1));
imgSource.Draw(rect, new Bgr(Color.Blue), 1);
}
}

我不理解此代码…首先,此代码无法正常工作….其次,如果有人知道如何正确执行此操作…请发布该代码…..

解决方法:

MatchTemplate方法是专门为匹配具有定义特征的对象而设计的.一张脸,尽管您和我可能对MatchTemplate中采用的FFT方法具有定义功能,但这些定义功能根本不足以用于脸部识别. Surya是正确的,因为进行比较很有趣,我建议最好的方法是将模板面部图像的区域与相机识别出的面部进行匹配.因此,例如,您将确定眼睛的位置并将MatchTemplate应用于相同的位置,并对这些特征进行匹配以求平均值,以估计总体准确性.

但是,您固有的重大问题是执行时间.对于较大的人脸数据库,MatchTemplate不会显着减少数据集以进行实时处理.

本征识别器是一种更安全有效的方法.它比创建自己的算法更可靠,而且速度更快.请在此处查看有关如何实施的文章:

http://www.codeproject.com/Articles/261550/EMGU-Multiple-Face-Recognition-using-PCA-and-Paral

希望这可以帮助,

干杯,

克里斯

标签:emgucv,opencv,c,opencvdotnet
来源: https://codeday.me/bug/20191201/2082796.html