OpenCV - 从 C++ 到 Python 打开 XML 文件
Posted
技术标签:
【中文标题】OpenCV - 从 C++ 到 Python 打开 XML 文件【英文标题】:OpenCV - Open an XML file from C++ to Python 【发布时间】:2017-08-24 15:34:43 【问题描述】:我正在做一个项目来提高我在 OpenCV 方面的技能,由于我是新手,所以我缺乏很多知识。在我的项目中,我在图像上检测到人脸,裁剪人脸区域,将其转换为灰度,使用 LBP 并使用 calcHist计算 LBP 图像的直方图。
我已使用 FileStorage 将所有这些直方图保存为 .xlm 文件。以上所有内容,在 Visual Studio 上使用 C++。现在我有一些机器学习算法的代码,如 SVM、神经网络、knn 等。但所有这些代码都在 Python 3 中。
我想到的下一步是获取所有这些 .xml 文件并将它们加载到 Python 脚本中,再次使用 OpenCV 来使用它们,但我无法做到最近几天的。
我尝试过的最简单的测试(来自 2017 年 7 月的帖子):
import cv2
fs = cv2.FileStorage("aa048t2aaunaff001.png_olbp.xml", cv2.FILE_STORAGE_READ)
fn = fs.getNode("Camera_Matrix")
print (fn.mat())
这里的问题:
1. fs 没有成员“getNode”。我在这里的安装做错了吗? 2. 打印输出“无”。
要加载的 XML 文件:https://drive.google.com/open?id=0B2TTkSDC13uQRk8tZlgxengzNW8
OpenCV:3.3.0,Python:3.6.2
找不到其他有效的方法,所以我发布了我尝试过的最简单的方法。感谢阅读,感谢您的帮助。
【问题讨论】:
试试help(fs)
。看着那个,我想说fs['Camera_Matrix']
就是你想要的。
似乎工作正常。 “帮助(fs)”确实有帮助。谢谢你的回答。
【参考方案1】:
由于我的帖子在大约 3 个月前得到了答复,但没有提供官方答复,因此我将回答我自己的问题。
我成功打开了我想要的文件,但我试图访问一个不存在的矩阵。我将fn = fs.getNode("Camera_Matrix")
更改为fn = fs.getNode("my_histrogram")
,OpenCV 成功加载了直方图。
【讨论】:
以上是关于OpenCV - 从 C++ 到 Python 打开 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章
c++ 和 python 层之间的 opencv.groupRectangles() 差异
OpenCV 图像处理——C++ vs C vs Python
opencv C++代码到Python opencv代码的转换