Привет, я пытаюсь обнаружить некоторые лицензионные пластины с помощью классификатора из cv2. (на Windows)
Я установил open-cv через pip install в venv
(путь: C: \ Users \ ramif \ Desktop \ StraßenverkehrProjekt \ venv \ Lib \ site -packages \ cv2)
import cv2
import matplotlib.pyplot as plt
x = cv2.imread("P1010003.jpg")
gray = cv2.cvtColor(x, cv2.COLOR_BGR2GRAY)
classifier = cv2.CascadeClassifier('venv\Lib\site-packages\cv2\data\haarcascade_russian_plate_number.xml')
platings = classifier.detectMultiScale(gray, minNeighbors = 10)
c = x.copy()
for plating in platings:
x, y, w, h = plating
cv2.rectangle(c, (x, y), (x+w, y+h), (55, 175, 212), 10)
z = cv2.cvtColor(c, cv2.COLOR_BGR2RGB)
print(plating)
plt.imshow(z)
plt.show()
Этот код работает нормально, но когда я пытаюсь прочитать несколько изображений с помощью for-l oop, он больше не работает. Как я могу прочитать несколько изображений с помощью функции detectMultiscale?
Вот пример кода, как я пытался его прочитать: (Failed Code)
import os
import cv2
import matplotlib.pyplot as plt
file = os.path.join(os.path.dirname(__file__), "Bilder")
os.chdir(file)
img = []
for i in os.listdir(file):
x = cv2.imread(i)
img.append(x)
break
for j in img:
gray = cv2.cvtColor(j, cv2.COLOR_BGR2GRAY)
classifier = cv2.CascadeClassifier('venv\Lib\site-packages\cv2\data\haarcascade_russian_plate_number.xml')
platings = classifier.detectMultiScale(gray)
print(platings)