Оглавление:

Анализатор трафика с использованием обнаружения живых объектов: 11 шагов (с изображениями)
Анализатор трафика с использованием обнаружения живых объектов: 11 шагов (с изображениями)

Видео: Анализатор трафика с использованием обнаружения живых объектов: 11 шагов (с изображениями)

Видео: Анализатор трафика с использованием обнаружения живых объектов: 11 шагов (с изображениями)
Видео: Обнаружение аномалий и признаков атак в сетевом трафике с использованием TCN-автокодировщика 2024, Сентябрь
Anonim
Image
Image
Анализатор трафика, использующий обнаружение живых объектов
Анализатор трафика, использующий обнаружение живых объектов

В современном мире светофоры необходимы для обеспечения безопасности дороги. Однако во многих случаях светофоры могут раздражать в ситуациях, когда кто-то приближается к свету, когда он становится красным. Это напрасная трата времени, особенно если свет не позволяет одному транспортному средству проехать перекресток, когда на дороге никого нет. Мое нововведение - это умный светофор, который использует обнаружение живых объектов с камеры для подсчета количества автомобилей на каждой дороге. Оборудование, которое я буду использовать для этого проекта, - это Raspberry Pi 3, модуль камеры и различное электронное оборудование для самого света. Используя OpenCV на Raspberry Pi, собранная информация будет пропущена через код, который управляет светодиодами через GPIO. В зависимости от этих чисел светофор будет меняться, пропуская автомобили в наиболее оптимальном порядке. В этом случае полоса с наибольшим количеством автомобилей будет пропущена, так что полоса с меньшим количеством автомобилей будет работать на холостом ходу, что снизит загрязнение воздуха. Это исключило бы ситуации, когда многие машины останавливаются, а на пересечении дороги нет машин. Это не только экономит время для всех, но и сохраняет окружающую среду. Количество времени, в течение которого люди останавливаются у знака остановки с работающим двигателем на холостом ходу, увеличивает загрязнение воздуха, поэтому, создав умный светофор, я могу оптимизировать световые схемы, чтобы автомобили тратили как можно меньше времени на остановленный автомобиль.. В конечном итоге эту систему светофоров можно было бы внедрить в городах, пригородах или даже в сельской местности, чтобы они были более эффективными для людей, что уменьшило бы загрязнение воздуха.

Шаг 1: Список деталей

Материалы:

Raspberry Pi 3 Модель B v1.2

Камера Raspberry Pi v2.1

Источник питания micro USB 5 В / 1 А

HDMI-монитор, клавиатура, мышь, SD-карта с Raspbian Jessie

Коммутационный кабель Raspberry Pi GPIO

Красный, желтый, зеленый светодиоды (по 2 каждого цвета)

Гнездовые разъемы для Raspberry Pi (7 уникальных цветов)

Провод 24 калибра в ассортименте (разные цвета) + термоусадочная трубка

Деревянная панель или платформа 2’x2’

Шурупы по дереву

Черная поверхность (картон, пенопласт, плакатный картон и т. Д.)

Белая (или любого другого цвета, кроме черного) лента для дорожной разметки

Черная аэрозольная краска (для ПВХ)

Труба из ПВХ ½”с угловыми соединениями 90 градусов (2), тройник (1), переходник с внутренней резьбой (2)

Инструменты

Паяльник

3д принтер

Сверло с различными сверлами

Макетная плата

Тепловая пушка

Шаг 2: настройка Raspberry Pi

Загрузите SD-карту в Raspberry Pi и загрузитесь.

Следуйте этому руководству, чтобы установить необходимые библиотеки OpenCV. Убедитесь, что у вас есть время сделать этот шаг, так как установка библиотеки OpenCV может занять пару часов. Не забудьте также установить и настроить здесь свою камеру.

Вы также должны установить pip:

пикамера

гпиозеро

RPi. GPIO

Вот окончательный код:

из picamera.array импортировать PiRGBArray

из Picamera импорт PiCamera

импортировать picamera.array

импортировать numpy как np

время импорта

импорт cv2

импортировать RPi. GPIO как GPIO

время импорта

GPIO.setmode (GPIO. BCM)

для i в (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

raw = PiRGBArray (cam, size = (480, 480))

time.sleep (0,1)

colorLower = np.array ([0, 100, 100])

colorUpper = np.array ([179, 255, 255])

initvert = 0

inithoriz = 0

counter = 0

для кадра в cam.capture_continuous (raw, format = "bgr", use_video_port = True):

frame = frame.array

hsv = cv2.cvtColor (кадр, cv2. COLOR_BGR2HSV)

маска = cv2.inRange (hsv, colorLower, colorUpper)

маска = cv2.blur (маска, (3, 3))

маска = cv2.dilate (маска, Нет, итераций = 5)

маска = cv2.erode (маска, Нет, итерации = 1)

маска = cv2.dilate (маска, Нет, итерации = 3)

меня, thresh = cv2.threshold (маска, 127, 255, cv2. THRESH_BINARY)

cnts = cv2.findContours (thresh, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [- 2]

center = None

верт = 0

горизонт = 0

если len (cnts)> 0:

для c в центах:

(x, y), радиус = cv2.minEnclosingCircle (c)

центр = (int (x), int (y))

радиус = int (радиус)

cv2.circle (рамка, центр, радиус, (0, 255, 0), 2)

х = int (х)

у = int (у)

если 180 <x <300:

если y> 300:

верт = верт +1

elif y <180:

верт = верт +1

еще:

верт = верт

если 180 <y <300:

если x> 300:

горизонт = горизонт +1

элиф х <180:

горизонт = горизонт +1

еще:

горизонт = горизонт

если vert! = initvert:

print "Автомобили в вертикальной полосе:" + str (vert)

initvert = верт

print "Автомобили в горизонтальной полосе:" + str (горизонт)

inithoriz = горизонт

Распечатать '----------------------------'

если горизонт! = inithoriz:

print "Автомобили в вертикальной полосе:" + str (vert)

initvert = верт

print "Автомобили в горизонтальной полосе:" + str (горизонт)

inithoriz = горизонт

Распечатать '----------------------------'

если верт <горизонт:

GPIO.output (23, GPIO. HIGH)

GPIO.output (21, GPIO. HIGH)

GPIO.output (16, GPIO. LOW)

GPIO.output (25, GPIO. LOW)

если горизонт <верт:

GPIO.output (16, GPIO. HIGH)

GPIO.output (25, GPIO. HIGH)

GPIO.output (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow ("Фрейм", фрейм)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Молотить", обмолот)

raw.truncate (0)

если cv2.waitKey (1) & 0xFF == ord ('q'):

перерыв

cv2.destroyAllWindows ()

GPIO.cleanup ()

Шаг 3: Raspberry Pi и крепление камеры

Raspberry Pi и крепление для камеры
Raspberry Pi и крепление для камеры
Raspberry Pi и крепление для камеры
Raspberry Pi и крепление для камеры
Raspberry Pi и крепление для камеры
Raspberry Pi и крепление для камеры
Raspberry Pi и крепление для камеры
Raspberry Pi и крепление для камеры

Напечатайте на 3D-принтере корпус и крепление для камеры и соберите.

Шаг 4: Сборка светофора

Сборка светофора
Сборка светофора
Сборка светофора
Сборка светофора
Сборка светофора
Сборка светофора

Протестируйте светофор с помощью макета. Каждый противостоящий набор светодиодов имеет общий анод, и все они имеют общий катод (землю). Всего должно быть 7 входных проводов: по 1 на каждую пару светодиодов (6) + 1 провод заземления. Припаиваем и собираем светофоры.

Шаг 5: Электромонтаж (Часть 1)

Электропроводка (Часть 1)
Электропроводка (Часть 1)
Электропроводка (Часть 1)
Электропроводка (Часть 1)
Электропроводка (Часть 1)
Электропроводка (Часть 1)
Электропроводка (Часть 1)
Электропроводка (Часть 1)

Припаяйте штыри разъема с внутренней резьбой примерно к 5 футам провода. Это стороны, по которым эти провода будут в дальнейшем проходить через трубы из ПВХ. Убедитесь, что вы можете различать разные наборы огней (2 х 3 цвета и 1 фон). В этом случае я пометил концы другого набора красных, желтых и синих проводов маркером, чтобы я знал, какой из них какой.

Шаг 6: создание окружающей среды

Создание окружающей среды
Создание окружающей среды
Создание окружающей среды
Создание окружающей среды
Создание окружающей среды
Создание окружающей среды
Создание окружающей среды
Создание окружающей среды

Создание окружающей среды Сделайте квадратный деревянный поддон 2 фута, подобный этому. Древесный лом - это хорошо, так как он будет закрыт. Просверлите отверстие, которое подходит именно вашему адаптеру. Просверлите винты по бокам поддона, чтобы закрепить трубу из ПВХ на месте. Вырежьте черную пенопластовую доску, чтобы она соответствовала деревянному поддону под ней. Просверлите отверстие вокруг трубы из ПВХ. Повторите то же самое с противоположным углом. Отметьте дороги белой лентой.

Шаг 7: Завершение работы над рамой из ПВХ

Доработка каркаса из ПВХ
Доработка каркаса из ПВХ
Доработка каркаса из ПВХ
Доработка каркаса из ПВХ
Доработка каркаса из ПВХ
Доработка каркаса из ПВХ

На верхней трубе просверлите отверстие, в которое поместится пучок проводов. Грубое отверстие - это нормально, если у вас есть доступ к внутренней части труб. Проденьте провода через трубы из ПВХ и коленчатые соединения для пробной посадки. Как только все будет готово, покрасьте ПВХ немного черной аэрозольной краской, чтобы очистить внешний вид основной рамы. Вырежьте небольшой зазор в одной из труб из ПВХ для тройника. Добавьте к этому тройнику трубу из ПВХ, чтобы светофор свешивался. Диаметр может быть таким же, как у основной рамы (1/2 дюйма), хотя, если вы используете более тонкую трубу, убедитесь, что 7 проводов могут пройти сквозь нее. Просверлите отверстие в этой трубе, чтобы светофор мог свисать.

Шаг 8: Электромонтаж (Часть 2)

Электропроводка (Часть 2)
Электропроводка (Часть 2)
Электропроводка (Часть 2)
Электропроводка (Часть 2)
Электропроводка (Часть 2)
Электропроводка (Часть 2)

Переподключите все, как было проверено ранее. Дважды проверьте светофор и проводку с макетной платой, чтобы убедиться, что все подключения выполнены. Припаяйте светофор к проводам, идущим через тройник. Оберните оголенные провода изолентой, чтобы предотвратить короткое замыкание и обеспечить более чистый вид.

Шаг 9: Готово

Законченный!
Законченный!
Законченный!
Законченный!
Законченный!
Законченный!
Законченный!
Законченный!

Чтобы запустить код, обязательно установите исходный код как ~ /.profile и cd укажите местоположение вашего проекта.

Шаг 10: Дополнения (фотографии)

Рекомендуемые: