我构建了一个PyQt应用程序来展示对象检测。检测器使用haar分类器进行训练,其分析符是cascade.xml文件。
我尝试使用pyinstaller打包此应用程序。但是,在此之前,我制作了一个我编译的resources.qrc文件。
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>cascade.xml</file>
</qresource>
</RCC>
我的问题是,当我使用此资源时,通过
:/cascade.xml
未读取文件。 我该怎么做才能解决这个问题。
答案 0 :(得分:0)
首先需要使用pyrcc
pyrcc5 resources.qrc -o resources.py
然后需要将pyrcc
的输出导入到您的python代码
import resources
然后您应该可以通过':/cascade.xml'
访问资源。在某些情况下,可能需要使用'qrc:/cascade.xml'
但是,资源路径仍然必须像磁盘上的文件一样对待。要访问其内容,您需要从资源中读取。以下是使用lxml
import lxml.etree as etree
from PyQt5 import QtCore
# Import the resource module create by pyrcc
import resources
# QFile knows how to read Qt resources
xml_file = QtCore.QFile(':/cascade.xml')
if xml_file.open(QtCore.QFile.ReadOnly):
# Read the QFile and convert QByteArray output to python string
xml_str = str(xml_file.readAll())
# parse the xml document from string
xml_tree = etree.ElementTree(etree.fromstring(xml_str))
xml_file.close()