2017-02-19 14 views
11

के साथ काम नहीं करता है मैंने पीईक्यूटी और ओपनलप्र के साथ एक जीयूआई ऐप बनाने की कोशिश की, लेकिन मेरे कोड के साथ कोई समस्या है। एक साधारण उदाहरण:ओपनएएलपीआर पीईक्यूटी

from openalpr import Alpr 
from PyQt4 import QtCore, QtGui 

class AnalizePlate(object): 

    def __init__(self): 

     self.alpr = None 
     try: 
      self.alpr = Alpr("eu", "/etc/openalpr/openalpr.conf", "/usr/share/openalpr/runtime_data") 
      if not self.alpr.is_loaded(): 
       print("Error loading OpenALPR") 
     except: 
      print "Error" 


    def proccess(self): 
     self.alpr.set_top_n(7) 
     self.alpr.set_default_region("md") 

     results = self.alpr.recognize_file("/tmp/1487428945.14.jpg") 
     print results 

a = AnalizePlate() 
a.proccess() 

ऊपर कोड एक आकर्षण की तरह काम करता है, लेकिन अगर जीयूआई शामिल है, तो अजीब व्यवहार होता है।

from openalpr import Alpr 
from PyQt4 import QtCore, QtGui 

class AnalizePlate(object): 

    def __init__(self): 

     self.alpr = None 
     try: 
      self.alpr = Alpr("eu", "/etc/openalpr/openalpr.conf", "/usr/share/openalpr/runtime_data") 
      if not self.alpr.is_loaded(): 
       print("Error loading OpenALPR") 
     except: 
      print "Error" 


    def proccess(self): 
     self.alpr.set_top_n(7) 
     self.alpr.set_default_region("md") 

     results = self.alpr.recognize_file("/tmp/1487428945.14.jpg") 
     print results 

class Window(QtGui.QWidget): 

    def __init__(self): 
     super(Window, self).__init__() 
     self.resize(1198, 651) 
     self.analize = AnalizePlate() 
     self.analize.proccess() 
     QtCore.QMetaObject.connectSlotsByName(self) 


if __name__ == "__main__": 
    import sys 
    import sip 
    app = QtGui.QApplication(sys.argv) 
    window = Window() 

    window.show() 
    sys.exit(app.exec_()) 

यह एक मूल उदाहरण है, लेकिन त्रुटि अभी भी यहां है। openalpr कोड को Window कक्षा पर सीधे भाग्य के साथ लागू करने का प्रयास किया। तो मूल रूप से, यदि कोई gui नहीं है, कोड काम करता है। openALPR version 2.2.4 और PyQT4 का उपयोग करना। इसके अलावा, छवि की जांच की, यह वहां है। recognize_array()recognize file के बजाय उपयोग किया जाता है। मुझे मिली त्रुटि है:

OpenCV Error: Assertion failed (scaleFactor > 1 && image.depth() == CV_8U) in detectMultiScale, file /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/objdetect/src/cascadedetect.cpp, line 1081 Caught exception in OpenALPR recognize: /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/objdetect/src/cascadedetect.cpp:1081: error: (-215) scaleFactor > 1 && image.depth() == CV_8U in function detectMultiScale

Traceback (most recent call last): File "analize.py", line 39, in window = Window() File "analize.py", line 31, in init self.analize.proccess() File "analize.py", line 22, in proccess results = self.alpr.recognize_file("/tmp/1487428945.14.jpg") File "/usr/lib/python2.7/dist-packages/openalpr/openalpr.py", line 132, in recognize_file response_obj = json.loads(json_data) File "/usr/lib/python2.7/json/init.py", line 339, in loads return _default_decoder.decode(s) File "/usr/lib/python2.7/json/decoder.py", line 364, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode obj, end = self.scan_once(s, idx) ValueError: Expecting property name: line 1 column 122 (char 121)

+0

मैं इस त्रुटि को पुन: उत्पन्न नहीं कर सकता। आपको ओपनलप्र और नवीनतम निर्भरताओं के नवीनतम संस्करण के साथ परीक्षण करने का प्रयास करना चाहिए। एफडब्ल्यूआईडब्ल्यू, मेरा सेटअप है: ओपनलप्र-2.3.0, ओपनसीवी-3.2.0, टेस्सेक्ट-3.0.5, पायथन-2.7.10, पीईटीटी-4.12। ओपनलप्रड रीडमे का दावा है कि ओपनसीवी-2.4.8 न्यूनतम आवश्यकता है। फिर भी, मेरा झटका यह है कि ओपनसीवी सबसे संभावित अपराधी है, यह देखते हुए कि संस्करण 2 श्रृंखला अब विरासत कोड है और आप इसकी नवीनतम रिलीज का भी उपयोग नहीं कर रहे हैं (2.4.13)। – ekhumoro

+0

कुछ काम अनुपस्थित होने के बाद, मैं इस मुद्दे पर वापस आ गया। @ekhumoro ने opencv संस्करण देखा, तो मैंने किया, लेकिन मुझे पता था कि मेरे पास ओपनसीवी 3.1 स्थापित है। स्थापित संकुल की जांच करने के बाद, मुझे याद आया कि ओपनएएलपीआर 'एपीटी-गेट' के माध्यम से स्थापित है और यह ओपनसीवी समर्थन (संस्करण 2.4.9.1) के साथ आता है। इसलिए, स्रोत से स्थापना ने बिना किसी कोड संशोधन के मेरे मुद्दे को हल किया। लेकिन, सवाल यह है कि ओपनसीवी 2.4.9 और पीईटीटीटी में संघर्ष क्यों है? – Aleksandar

उत्तर

0

यह डीपीआई जागरूकता की समस्या हो सकती है। आपको उच्च डीपीआई पर http://doc.qt.io/qt-5/highdpi.html पर क्यूटी में देखने की आवश्यकता हो सकती है। इसके अलावा, अगर आप 5.6 करने के लिए क्यूटी अद्यतन करने के लिए तैयार हैं इस मदद मिल सकती है https://stackoverflow.com/a/36058813/2135548

0

मैं नया आवेदन app = QtGui.QApplication(sys.argv) के लिए हस्ताक्षर लगता argc याद आ रही है। नए एप्लिकेशन के लिए हस्ताक्षर QApplication(int & argc, char ** argv)here

+0

यह पूरी तरह से गलत है, और किसी भी तरह से प्रश्न का उत्तर नहीं देता है। – ekhumoro

संबंधित मुद्दे