may*_*ran 1 opencv image-processing face-recognition image-recognition computer-vision
通过网络摄像头,我捕获了前方人物的图像。然后我显示一个视频。之后,我必须找出是否同一个人站在前面。我怎样才能做到这一点?互联网中的可能性需要许多图像来训练SVM。我只有一张要被识别的人的照片。我该如何实现?请提供一些代码示例(如果可能的话),因为我是新手。我已经实现了摄像头逻辑。只是我需要的图像识别。
好吧,让我们尝试一下。
一种相当典型的方法是使用一种称为本征面的东西。OpenCV有一整节关于使用EigenFaces和类似方法的面部识别,该方法可在http://docs.opencv.org/modules/contrib/doc/facerec/facerec_tutorial.html找到
但这假设您有要使用的图像数据库(但这并不是开始查找的好地方)。
使用面部/图像特征的方法:
此方法不一定效率很高,因为它取决于某些功能的计算效率。这种方法的准确性取决于您对特征及其权重因子的定义程度。但是,这是一种不一定需要任何机器学习的方法。(尽管肯定会有所帮助!)
另一种方法是尝试比较您的源脸和目标脸的相似程度。这可以通过比较一组功能来完成。
您要做的第一件事是确定目标图像是否包含面部。请参阅 http://docs.opencv.org/master/d7/d8b/tutorial_py_face_detection.html ,也可以实施此处的Viola-Jones算法。
现在,如果您的面部检测算法尚未执行此操作,则需要查找目标面部的方向,比例和位置(这对于查找有关人脸的某些特征很有用)。
现在,您需要计算目标脸的特征。您可以使用图像特征和诸如Fast,SIFT和ORB的描述符来计算图像特征并进行比较。参见http://docs.opencv.org/master/dc/dc3/tutorial_py_matcher.html
或者,由于您知道自己与人打交道的情况,因此可以计算出有助于区分人的特征。示例如下:
眼睛之间的距离,脸部形状。鼻子的长度。眼睛的高度。鼻子和嘴巴之间的距离等
棘手的部分是弄清楚如何可靠地计算特征量度,然后将所有这些量度合并为一个量度。通常采用机器学习算法来找到用于组合每个度量的加权因子。
但是您可以使用一些猜测工作来选择初始权重,然后进行一些反复试验,直到找到适合您的权重集合。
一旦确定了权重,就可以通过找到源要素和目标要素之间的平方差来组合它们,并将它们全部加在一起。(如果首先对所有子功能进行归一化(即始终在0到1的范围内)并进行加权,以使整体指标的范围从0到1,则效果最好。
假设您有5个特征f0,f1,f2,f3,f4,f5,都在0和1之间。这些值是源面和目标面之间的归一化平方差。
并且您有5个权重因子:0.3、0.1、0.15、0.25、0.2(总和为1)
您的整体指标是
Overall Metric = 0.3 * f0 + 0.1 * f2 + 0.15 * f3 + 0.25 * f4 + 0.2 * f5
Run Code Online (Sandbox Code Playgroud)
然后,如果值接近于0,则两个面更相似;如果值接近于1,则两个面相似。在上面的示例中,特征0是最重要的特征,而特征2是最小的特征。
归档时间: |
|
查看次数: |
4655 次 |
最近记录: |