2017-02-07 4 views
0

Ich habe eine PyQt-Anwendung erstellt, um die Objekterkennung zu demonstrieren. Der Detektor wurde mit einem Haar-Klassifikator trainiert, dessen Ausgang eine cascade.xml-Datei ist.Kann eine XML-Datei Teil einer QT-QRC-Ressourcendatei sein?

Ich habe versucht, diese Anwendung mit Pyinstaller zu packen. Vorher habe ich jedoch eine resources.qrc-Datei erstellt, die ich kompiliert habe.

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

Mein Problem ist, dass, wenn ich diese Ressource verwenden, über

:/cascade.xml 

die Datei nicht gelesen wird. Was kann ich tun, um dies zu beheben?

Antwort

0

Als erstes müssen Sie ein Python-Modul aus Ihrer .qrc Datei mit pyrcc

pyrcc5 resources.qrc -o resources.py 

Der Ausgang des pyrcc dann

in Ihren Python-Code importiert werden muss erstellen
import resources 

Dann sollten Sie sein Zugriff auf die Ressource über ':/cascade.xml'. In einigen Fällen kann es notwendig sein, 'qrc:/cascade.xml'

zu verwenden Der Ressourcenpfad muss jedoch weiterhin wie eine Datei auf der Festplatte behandelt werden. Um auf seinen Inhalt zuzugreifen, müssen Sie von der Ressource lesen. Hier ist ein Beispiel dafür, wie es zu lesen und analysieren 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

Verwendung Gemäß Seite 181 von Rapid GUI-Programmierung mit Python und Qt: The Definitive Guide zu PyQt Programmierung, konnte ich mit der Kaskade als qt Ressource vermeiden . 'cascade = cv2.CascadeClassifier() fullpath = os.path.dirname (__ file__) cascade.load (voller Pfad + '/' + 'wf_cascade.xml')' – fninsiima

Verwandte Themen