#python #oracle #spyder #anpr #alpr
#python #Oracle #spyder #anpr #alpr
Вопрос:
Ниже приведен мой код, который я взял с github и модифицировал в соответствии с моими потребностями, он показывает мне ошибку при печати строки (символы), когда я пытаюсь взять символы в виде строки в переменной из видео и вставить их в базу данных. Он отлично работает с изображением, но не с видео.
import numpy as np
from skimage.transform import resize
from skimage import measure
from skimage.measure import regionprops
import matplotlib.patches as patches
import matplotlib.pyplot as plt
import DetectPlate
import cx_Oracle
import datetime
# The invert was done so as to convert the black pixel to white pixel and vice versa
license_plate = np.invert(DetectPlate.plate_like_objects[0])
labelled_plate = measure.label(license_plate)
fig, ax1 = plt.subplots(1)
ax1.imshow(license_plate, cmap="gray")
# the next two lines is based on the assumptions that the width of
# a license plate should be between 5% and 15% of the license plate,
# and height should be between 35% and 60%
# this will eliminate some
character_dimensions = (0.35*license_plate.shape[0], 0.60*license_plate.shape[0], 0.05*license_plate.shape[1], 0.15*license_plate.shape[1])
min_height, max_height, min_width, max_width = character_dimensions
characters = []
counter=0
column_list = []
for regions in regionprops(labelled_plate):
y0, x0, y1, x1 = regions.bbox
region_height = y1 - y0
region_width = x1 - x0
if region_height > min_height and region_height < max_height and region_width > min_width and region_width < max_width:
roi = license_plate[y0:y1, x0:x1]
# draw a red bordered rectangle over the character.
rect_border = patches.Rectangle((x0, y0), x1 - x0, y1 - y0, edgecolor="red",
linewidth=2, fill=False)
ax1.add_patch(rect_border)
# resize the characters to 20X20 and then append each character into the characters list
resized_char = resize(roi, (20, 20))
characters.append(resized_char)
# this is just to keep track of the arrangement of the characters
column_list.append(x0)
print(characters)
connection = cx_Oracle.connect('nabeel/1234@localhost/xe')
cursor = connection.cursor()
dtime=datetime.datetime.now()
cursor.execute("insert into number_plate(reg_no,tstamp) values(:licPlate,:ts)",licPlate=characters)
cursor.setinputsizes(ts=cx_Oracle.TIMESTAMP)
cursor.execute(None, {'ts':dtime})
connection.commit()
connection.close()
plt.show()
я ожидаю, что он вставит номерной знак в таблицу вместе с отметкой времени. Спасибо
Комментарии:
1. Можете ли вы опубликовать полную ошибку? Это трассировка или какое-то предупреждение?
2. он показывает эту строку: cursor.execute(«вставить в number_plate(reg_no,tstamp) значения (:licPlate,:ts)»,licPlate=символы), затем после этого NotSupportedError : значение элемента 0 не поддерживается.. Это единственное, что я получаю
3. эй, SyntaxVoid я делаю что-то не так в коде? Я имею в виду, что я перекрестно проверил код, но он показывает NotSupportedError: значение элемента 0 не поддерживается. Не знаю, что делать. Нигде не удается найти. Если кто-нибудь может ответить на этот вопрос, пожалуйста, это было бы действительно полезно.. Спасибо