opencv fisherface识别器

时间:2018-01-05 12:20:15

标签: python-3.x opencv

我正在尝试为FisherFaceRecognizer加载模型文件。最初的问题是该程序是为较旧的OpenCV版本编写的,似乎有些接口已经改变。

关于我的项目的信息:

  • 编程语言:Python 3.5
  • OpenCV版本:3.3.0

这两行是我遇到的问题:

      model = cv2.face.createFisherFaceRecognizer()
      model.load('foo_model.xml')

在OpenCV文档中,我发现有一种新的方法来调用create函数,它似乎有效。但我找不到正确的加载功能调用。我试图使用识别器的读取功能,但这会导致错误。

        model = cv2.face.FisherFaceRecognizer_create()
        model.read('foo_model.xml')

我尝试使用read()时收到的错误消息:

  

无法打开文件进行阅读!在函数读取

有人可以帮我加载模型文件吗?谢谢:))

2 个答案:

答案 0 :(得分:0)

问题似乎是保存模型的xml格式已被更改。这似乎是一个已知问题。我正在使用OpenCV 3.3.0并希望从较旧的OpenCV版本加载模型,这会导致读取函数中提到的错误。在OpenCV Q& A论坛中,向我建议了一个解决方案,但在我的情况下它没有用。尽管如此,我仍会将链接发送到OpenCV Q& A here的帖子。也许有同样问题的其他人可以从中受益。

答案 1 :(得分:0)

问题出在xml文件格式上。如果打开XML文件,将找不到“ my_object”标签。我将不进行详细介绍,但是,每次遇到此问题时,按如下所示修改xml文件时都可以使用。

     <?xml version="1.0"?>
         <opencv_storage>
             <my_object> //add this 
                  .........
                  .........
                  .........
             </my_object> //and this
        </opencv_storage>