2017-02-07 1 views
0

オブジェクト検出を示すPyQtアプリケーションを構築しました。検出器はhaar分類器を使用して訓練され、そのュープットはcascade.xmlファイルである。xmlファイルをQT qrcリソースファイルの一部にすることができます

pyinstallerを使用してこのアプリケーションをパッケージ化しようとしました。しかし、これの前に、私はresources.qrcファイルを作った。

<!DOCTYPE RCC><RCC version="1.0"> 
<qresource> 
<file>cascade.xml</file> 
</qresource> 
</RCC> 

私の問題は、私は

:/cascade.xml 

を経由して、このリソースを使用する場合、ファイルが読み込まれていないことです。 これを解決するにはどうすればよいですか。 pyrcc

pyrcc5 resources.qrc -o resources.py 

であなたの.qrcファイルからpyrccの出力をPythonモジュールを作成するための

答えて

0

あなたが最初の必要性は、その後、あなたがする必要がありますあなたのpythonコード

import resources 

にインポートする必要があります':/cascade.xml'を通じてリソースにアクセスできます。場合によっては、使用する必要があるかもしれません。'qrc:/cascade.xml'

ただし、リソースパスはディスク上のファイルのように扱われなければなりません。その内容にアクセスするには、リソースから読み込む必要があります。ここでは、PythonとQtと迅速なGUIプログラミングから181ページによると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() 
+0

を使用して読み、解析する方法の例です:PyQtはプログラミングのDefinitive Guideのを、私はQTリソースとしてカスケードの使用を避けることができました。 'cascade = cv2.CascadeClassifier() フルパス= os.path.dirname(__ file__) cascade.load(フルパス+ '/' + 'wf_cascade.xml')' – fninsiima

関連する問題