Answer the question
In order to leave comments, you need to log in
What is the error and how to solve it?
The program takes images of traffic lights from the folder and then displays the color of each in the form [0,0,1], [1,0,0], and [0,1,0] (this is clearly visible in the code)
On Thonny, the program compiles fine, but not on the site. What could be causing the error and how to solve it?
import cv2
import os
import glob
import numpy
def one_hot_encode(label):
""" Функция осуществляет перекодировку текстового входного сигнала
в массив элементов, соответствующий выходному сигналу
Входные параметры: текстовая метка
Выходные параметры: метка ввиде массива
Пример:
one_hot_encode("red") должно возвращать: [1, 0, 0]
one_hot_encode("yellow") должно возвращать: [0, 1, 0]
one_hot_encode("green") должно возвращать: [0, 0, 1]
"""
one_hot_encoded = []
if label == "red":
one_hot_encoded = [1, 0, 0]
elif label == "yellow":
one_hot_encoded = [0, 1, 0]
elif label == "green":
one_hot_encoded = [0, 0, 1]
return one_hot_encoded
# приведение входного изображения к стандартному виду
def standardize_input(image):
standard_im = cv2.imread(image)
standard_im = cv2.resize(standard_im,(599,998))
"""Приведение изображений к стандартному виду.
Входные данные: изображение
Выходные данные: стандартизированное изображений.
"""
## TODO: Если вы хотите преобразовать изображение в формат, одинаковый для всех изображений, сделайте это здесь.
return standard_im
# Определение сигнала светофора по изображению
def predict_label(rgb_image):
rgb_image = rgb_image[211:883,258:378]
"""
функция определения сигнала светофора по входному изображению
Входные данные: rgb изображение
Выходные данные:
"""
## TODO: ваша функция распознавания сигнала светофора должна быть здесь.
hsv = cv2.cvtColor(rgb_image, cv2.COLOR_BGR2HSV)
v = hsv[:,:,2]
green_sum = numpy.sum(v[449:672,0:120])
yellow_sum = numpy.sum(v[225:448,0:120])
red_sum = numpy.sum(v[0:224,0:120])
if green_sum > yellow_sum and green_sum > red_sum:
predicted_label="green"
if yellow_sum > green_sum and yellow_sum > red_sum:
predicted_label="yellow"
if red_sum > yellow_sum and red_sum > green_sum:
predicted_label="red"
encoded_label = one_hot_encode(predicted_label)
return encoded_label
path = "/tlr_offline/traffic_light_images/training/"
color = ["red","green","yellow"]
for clr in color:
path=os.path.join(path, clr)
os.path.join(path,"*.jpg")
fileList = glob.glob(os.path.join(path,"*.jpg"))
for filename in fileList:
frame=standardize_input(filename)
print(predict_label(frame))
path = "/tlr_offline/traffic_light_images/training/"
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question