Python 3.x opencv鱼面识别器

Python 3.x opencv鱼面识别器,python-3.x,opencv,Python 3.x,Opencv,我正在尝试加载FisherFaceRecognizer的模型文件。最初的问题是,该程序是为较旧的OpenCV版本编写的,似乎某些接口已经更改 有关我的项目的信息: 编程语言:Python 3.5 OpenCV版本:3.3.0 以下是我遇到的两条问题: model = cv2.face.createFisherFaceRecognizer() model.load('foo_model.xml') 在OpenCV文档中,我发现有一种调用create函数的新方法,它似乎

我正在尝试加载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()时收到的错误消息:

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


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

问题似乎是保存模型的xml格式已更改。这似乎是一个众所周知的问题。我正在使用OpenCV 3.3.0,希望从旧版OpenCV加载一个模型,这会导致读取函数出现上述错误。在OpenCV问答论坛上,有人向我提出了一个解决方案,但在我的情况下,它不起作用。尽管如此,我还是会在OpenCV Q&A上删除我的帖子链接。也许其他有同样问题的人可以从中受益。

问题在于xml文件格式。如果打开XML文件,将找不到“my_object”标记。我将不详细讨论这个问题,但是,每当我遇到这个问题时,当我修改xml文件时,它就会起作用,如下所示

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

//加上这个
.........
.........
.........
//还有这个