Hi! I have a code for recognizing road signs. Everything is implemented on Raspberry Pi 4. The code itself is below:
import requests
import cv2
import numpy as np
from picamera import PiCamera
from roboflow import Roboflow
# ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ Roboflow
rf = Roboflow(api_key="my_api_key")
project = rf.workspace().project("project_name")
model = project.version(1).model
# ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΠΌΠ΅ΡΡ
camera = PiCamera()
# ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²
classes = ['Stop', '60 km/h', '40 km/h', 'Forward']
# ΠΠ°Ρ
Π²Π°ΡΡΠ²Π°Π΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡΠΎΠΊ Ρ ΠΊΠ°ΠΌΠ΅ΡΡ
camera.start_preview()
while True:
# Π‘Π½ΠΈΠΌΠ°Π΅ΠΌ ΡΡΠ΅ΠΉΠΌ Ρ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ
camera.capture('frame.jpg')
# ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΡΠ΅ΠΉΠΌ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ
image = cv2.imread('frame.jpg')
image = cv2.resize(image, (300, 300))
# ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΡΠΌΠ°Ρ RGB
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# ΠΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
result = model.predict(image_rgb)
# ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΄ΠΎΡΠΎΠΆΠ½ΡΡ
Π·Π½Π°ΠΊΠ°Ρ
ΠΈΠ· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
detections = result.predictions
for detection in detections:
class_name = detection.label
confidence = detection.confidence
box = detection.bounding_box
# ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
# Π ΠΈΡΡΠ΅ΠΌ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΈ ΡΠ΅ΠΊΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
# ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½Π° ΡΠΊΡΠ°Π½
cv2.imshow("Road Sign Detection", image)
# ΠΡΡ
ΠΎΠ΄ ΠΈΠ· ΡΠΈΠΊΠ»Π° ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ 'q'
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# ΠΠ°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΎΠΊΠ½Π° ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ΡΡΡΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ
cv2.destroyAllWindows()
camera.stop_preview()
But I get an error and I donβt understand which correct attribute is needed here.
Traceback (most recent call last): File "/home/rasberrypi/Desktop/ΠΡΠΎΠ΅ΠΊΡ 3/ai17.py",
line 38, in <module> class_name = detection.label
AttributeError: 'Prediction' object has no attribute 'label'
The error itself occurs when I show the desired road sign to the camera (that is, at the recognition stage)