Advertisement
jBardoe

egor loh

Dec 15th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.81 KB | None | 0 0
  1. import helpers
  2. import cv2
  3. import random
  4. import numpy as np
  5.  
  6. ACC_CONST = 2400
  7. def process(img):
  8.     ans = cv2.resize(img, (64, 64))
  9.     cv2.blur(ans, (2, 2), ans)
  10.     ans = cv2.inRange(ans, (0, 5, 0), (228, 111, 255))
  11.     ans = cv2.morphologyEx(ans, cv2.MORPH_OPEN, (2, 2))
  12.     return ans
  13.  
  14. def get_standart_signs():
  15.     """Функция, позволяющая получить стандартные изображения знаков для сравнения
  16.    с оригинальными изображениями. Стандартные изображения знаков хранятся во внутреннем каталоге."""
  17.     # стандартные изображения дорожных знаков
  18.  
  19.     a_unevenness = cv2.imread("data/standards/a_unevenness.jpg")
  20.  
  21.     no_drive = cv2.imread("data/standards/no_drive.png")
  22.  
  23.     no_entry = cv2.imread("data/standards/no_entry.jpg")
  24.  
  25.     parking = cv2.imread("data/standards/parking.jpg")
  26.  
  27.     pedistrain = cv2.imread("data/standards/pedistrain.jpg")
  28.  
  29.     road_works = cv2.imread("data/standards/road_works.jpg")
  30.  
  31.     stop = cv2.imread("data/standards/stop.jpg")
  32.  
  33.     way_out = cv2.imread("data/standards/way_out.jpg")
  34.  
  35.     standart_signs = [
  36.         pedistrain,
  37.         no_drive,
  38.         stop,
  39.         way_out,
  40.         no_entry,
  41.         road_works,
  42.         parking,
  43.         a_unevenness
  44.     ]
  45.  
  46.     for i in range(8):
  47.         standart_signs[i] = process(standart_signs[i])
  48.     return standart_signs
  49.  
  50. def one_hot_encode(label):
  51.  
  52.     one_hot_encoded = []
  53.     if label == "none":
  54.         one_hot_encoded = [0, 0, 0, 0, 0, 0, 0, 0]
  55.     elif label == "pedistrain":
  56.         one_hot_encoded = [1, 0, 0, 0, 0, 0, 0, 0]
  57.     elif label == "no_drive":
  58.         one_hot_encoded = [0, 1, 0, 0, 0, 0, 0, 0]
  59.     elif label == "stop":
  60.         one_hot_encoded = [0, 0, 1, 0, 0, 0, 0, 0]
  61.     elif label == "way_out":
  62.         one_hot_encoded = [0, 0, 0, 1, 0, 0, 0, 0]
  63.     elif label == "no_entry":
  64.         one_hot_encoded = [0, 0, 0, 0, 1, 0, 0, 0]
  65.     elif label == "road_works":
  66.         one_hot_encoded = [0, 0, 0, 0, 0, 1, 0, 0]
  67.     elif label == "parking":
  68.         one_hot_encoded = [0, 0, 0, 0, 0, 0, 1, 0]
  69.     elif label == "a_unevenness":
  70.         one_hot_encoded = [0, 0, 0, 0, 0, 0, 0, 1]
  71.  
  72.     return one_hot_encoded
  73.  
  74. def predict_label(image):
  75.  
  76.     standart_signs = get_standart_signs()
  77.     predicted_label = [0, 0, 0, 0, 0, 0, 0, 0]
  78.     image = process(image)
  79.  
  80.     results = [0 for i in range(len(standart_signs))]
  81.  
  82.     for i in range(64):
  83.         for j in range(64):
  84.             for k in range(8):
  85.                 if image[i][j] == standart_signs[k][i][j]:
  86.                     results[k] += 1
  87.     _max = max(results)
  88.     if _max > ACC_CONST:
  89.         predicted_label[results.index(_max)] = 1
  90.     return predicted_label
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement