Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import helpers
- import cv2
- import random
- import numpy as np
- ACC_CONST = 2400
- def process(img):
- ans = cv2.resize(img, (64, 64))
- cv2.blur(ans, (2, 2), ans)
- ans = cv2.inRange(ans, (0, 5, 0), (228, 111, 255))
- ans = cv2.morphologyEx(ans, cv2.MORPH_OPEN, (2, 2))
- return ans
- def get_standart_signs():
- """Функция, позволяющая получить стандартные изображения знаков для сравнения
- с оригинальными изображениями. Стандартные изображения знаков хранятся во внутреннем каталоге."""
- # стандартные изображения дорожных знаков
- a_unevenness = cv2.imread("data/standards/a_unevenness.jpg")
- no_drive = cv2.imread("data/standards/no_drive.png")
- no_entry = cv2.imread("data/standards/no_entry.jpg")
- parking = cv2.imread("data/standards/parking.jpg")
- pedistrain = cv2.imread("data/standards/pedistrain.jpg")
- road_works = cv2.imread("data/standards/road_works.jpg")
- stop = cv2.imread("data/standards/stop.jpg")
- way_out = cv2.imread("data/standards/way_out.jpg")
- standart_signs = [
- pedistrain,
- no_drive,
- stop,
- way_out,
- no_entry,
- road_works,
- parking,
- a_unevenness
- ]
- for i in range(8):
- standart_signs[i] = process(standart_signs[i])
- return standart_signs
- def one_hot_encode(label):
- one_hot_encoded = []
- if label == "none":
- one_hot_encoded = [0, 0, 0, 0, 0, 0, 0, 0]
- elif label == "pedistrain":
- one_hot_encoded = [1, 0, 0, 0, 0, 0, 0, 0]
- elif label == "no_drive":
- one_hot_encoded = [0, 1, 0, 0, 0, 0, 0, 0]
- elif label == "stop":
- one_hot_encoded = [0, 0, 1, 0, 0, 0, 0, 0]
- elif label == "way_out":
- one_hot_encoded = [0, 0, 0, 1, 0, 0, 0, 0]
- elif label == "no_entry":
- one_hot_encoded = [0, 0, 0, 0, 1, 0, 0, 0]
- elif label == "road_works":
- one_hot_encoded = [0, 0, 0, 0, 0, 1, 0, 0]
- elif label == "parking":
- one_hot_encoded = [0, 0, 0, 0, 0, 0, 1, 0]
- elif label == "a_unevenness":
- one_hot_encoded = [0, 0, 0, 0, 0, 0, 0, 1]
- return one_hot_encoded
- def predict_label(image):
- standart_signs = get_standart_signs()
- predicted_label = [0, 0, 0, 0, 0, 0, 0, 0]
- image = process(image)
- results = [0 for i in range(len(standart_signs))]
- for i in range(64):
- for j in range(64):
- for k in range(8):
- if image[i][j] == standart_signs[k][i][j]:
- results[k] += 1
- _max = max(results)
- if _max > ACC_CONST:
- predicted_label[results.index(_max)] = 1
- return predicted_label
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement