के साथ काम नहीं करता है मैंने पीईक्यूटी और ओपनलप्र के साथ एक जीयूआई ऐप बनाने की कोशिश की, लेकिन मेरे कोड के साथ कोई समस्या है। एक साधारण उदाहरण:ओपनएएलपीआर पीईक्यूटी
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)
मैं इस त्रुटि को पुन: उत्पन्न नहीं कर सकता। आपको ओपनलप्र और नवीनतम निर्भरताओं के नवीनतम संस्करण के साथ परीक्षण करने का प्रयास करना चाहिए। एफडब्ल्यूआईडब्ल्यू, मेरा सेटअप है: ओपनलप्र-2.3.0, ओपनसीवी-3.2.0, टेस्सेक्ट-3.0.5, पायथन-2.7.10, पीईटीटी-4.12। ओपनलप्रड रीडमे का दावा है कि ओपनसीवी-2.4.8 न्यूनतम आवश्यकता है। फिर भी, मेरा झटका यह है कि ओपनसीवी सबसे संभावित अपराधी है, यह देखते हुए कि संस्करण 2 श्रृंखला अब विरासत कोड है और आप इसकी नवीनतम रिलीज का भी उपयोग नहीं कर रहे हैं (2.4.13)। – ekhumoro
कुछ काम अनुपस्थित होने के बाद, मैं इस मुद्दे पर वापस आ गया। @ekhumoro ने opencv संस्करण देखा, तो मैंने किया, लेकिन मुझे पता था कि मेरे पास ओपनसीवी 3.1 स्थापित है। स्थापित संकुल की जांच करने के बाद, मुझे याद आया कि ओपनएएलपीआर 'एपीटी-गेट' के माध्यम से स्थापित है और यह ओपनसीवी समर्थन (संस्करण 2.4.9.1) के साथ आता है। इसलिए, स्रोत से स्थापना ने बिना किसी कोड संशोधन के मेरे मुद्दे को हल किया। लेकिन, सवाल यह है कि ओपनसीवी 2.4.9 और पीईटीटीटी में संघर्ष क्यों है? – Aleksandar