'I want to solve this problem > The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

I tried this code. but error occured!

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

import library

import numpy as np
import cv2
import pickle 
from cv2 import VideoCapture
from cv2 import waitKey
from keras.models import load_model

make object

framewidth = 640
frameHeight = 480
brightness = 180
threshold = 0.90
font = cv2.FONT_HERSHEY_SIMPLEX

set up video camera and load model

my_model.h5 file is uploaded this link >>> https://www.kaggle.com/datasets/kimseungk/traffic-sign-classfication-modelcnn-h5-file

cap = cv2.VideoCapture(0)
cap.set(3, framewidth)
cap.set(4, frameHeight)
cap.set(10, brightness)
model = load_model("C:/Users/k2h2j3/traffic/Train/my_model.h5")
model.summary()

traffic sign classfication

def grayscale(img):
    img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    return img

def equalize(img):
    img = cv2.equalizeHist(img)
    return img

def preprocessing(img):
    img = grayscale(img)
    img = equalize(img)
    img = img/255
    return img

def getCalssName(classNo):
    if classNo == 0: 
        return 'speed Limit 20km/h'
    elif classNo == 1: 
        return 'speed Limit 40km/h'
    elif classNo == 2: 
        return 'speed Limit 50km/h'
    elif classNo == 3: 
        return 'speed Limit 60km/h'
    elif classNo == 4: 
        return 'speed Limit 70km/h'
    elif classNo == 5: 
        return 'speed Limit 80km/h'
    elif classNo == 6: 
        return 'end of speed Limit 80km/h'
    elif classNo == 7: 
        return 'speed Limit 100km/h'
    elif classNo == 8: 
        return 'speed Limit 120km/h'
    elif classNo == 9: 
        return 'No passing'
    elif classNo == 10:
        return 'No passing for vehicles over 3.5 metric tons'
    elif classNo == 11: 
        return 'Right-of-way at the next intersection'
    elif classNo == 12: 
        return 'prioirty road'
    elif classNo == 13: 
        return 'Yield'
    elif classNo == 14: 
        return 'Stop'
    elif classNo == 15: 
        return 'No vehicles'
    elif classNo == 16:
        return 'Veh > 3.5 tons prohibited'
    elif classNo == 17:
        return 'No entry'
    elif classNo == 18:
        return 'General caution'
    elif classNo == 19:
        return 'Dangerous curve left'
    elif classNo == 20: 
        return 'Dangerous curve right'
    elif classNo == 21:
        return 'Double curve'
    elif classNo == 22:
        return 'Bumpy road'
    elif classNo == 23:
        return 'Slippery road'
    elif classNo == 24:
        return 'Road narrows on the right'
    elif classNo == 25: 
        return 'Road work'
    elif classNo == 26:
        return 'Traffic signals'
    elif classNo == 27: 
        return 'Pedetrians'
    elif classNo == 28:
        return 'Children crossing'
    elif classNo == 29:
        return 'Bicycles crossing'
    elif classNo == 30:
        return 'Beware of ice/snow'
    elif classNo == 31:
        return 'Wild animals crossing'
    elif classNo == 32:
        return 'End speed + passing limits'
    elif classNo == 33:
        return 'Turn right ahead'
    elif classNo == 34:
        return 'Turn left ahead'
    elif classNo == 35:
        return 'Ahead only'
    elif classNo == 36:
        return 'Go straight or right'
    elif classNo == 37:
        return 'Go straight or left'
    elif classNo == 38:
        return 'keep right'
    elif classNo == 39:
        return 'keep left'
    elif classNo == 40:
        return 'Roundabout mandatory'
    elif classNo == 41:
        return 'End of no passing'
    elif : classNo == 42:
        return 'End no passing veh > 3.5 tons'

problem occured

while True:

success, imgOrignal = cap.read()

img = np.asarray(imgOrignal)
img = cv2.resize(img, (32, 32))
img = preprocessing(img)
cv2.imshow("Processed Image", img)
img = img.reshape(1, 32, 32, 1)
cv2.putText(imgOrignal, "CLASS: " , (20, 35), font, 0.75, (0, 0, 255), 2, cv2.LINE_AA)
cv2.putText(imgOrignal, "PROBABILITY: ", (20, 75), font, 0.75, (0, 0, 255), 2, cv2.LINE_AA)
predictions = model.predict(img)
classIndex = model.predict(img)
probabilityValue =np.amax(predictions)

if probabilityValue > threshold:
    cv2.putText(imgOrignal,str(classIndex)+" "+str(getCalssName(classIndex)), (120, 35), font, 0.75, (0, 0, 255), 2, cv2.LINE_AA) 
    cv2.putText(imgOrignal, str(round(probabilityValue*100,2) )+"%", (180, 75), font, 0.75, (0, 0, 255), 2, cv2.LINE_AA)        
cv2.imshow("Result", imgOrignal)


if cv2.waitKey(1) & 0xFF == ord('q'):
    break

occured error message image> enter image description here



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source