Мазмуну:

Трафиктин анализатору Live Object Detection колдонуп: 11 кадам (Сүрөттөр менен)
Трафиктин анализатору Live Object Detection колдонуп: 11 кадам (Сүрөттөр менен)

Video: Трафиктин анализатору Live Object Detection колдонуп: 11 кадам (Сүрөттөр менен)

Video: Трафиктин анализатору Live Object Detection колдонуп: 11 кадам (Сүрөттөр менен)
Video: Crypto Pirates Daily News - January 22nd 2022 - Latest Crypto News Update 2024, Июль
Anonim
Image
Image
Трафиктин анализатору Live Object Detection колдонот
Трафиктин анализатору Live Object Detection колдонот

Азыркы дүйнөдө жол чырактары коопсуз жол үчүн абдан маанилүү. Бирок, көп учурда, светофор кимдир бирөө кызылга айланып баратканда жарыкка жакындап калганда кыжырды келтирет. Бул убакытты текке кетирет, айрыкча, жарык жолдо башка эч ким жок болгондо кесилиштен өтүүгө бир унаа тоскоол болсо. Менин жаңылыгым - бул ар бир жолдогу машиналардын санын эсептөө үчүн камерадан жандуу объектилерди аныктоону колдонгон акылдуу светофор. Мен бул долбоор үчүн колдоно турган жабдык - бул Raspberry Pi 3, камера модулу жана жарыктын өзү үчүн ар кандай электрондук жабдыктар. Raspberry Piде OpenCVди колдонуп, чогултулган маалымат LEDди GPIO аркылуу башкарган код аркылуу иштетилет. Бул сандарга жараша светофор өзгөрүп, унааларды эң оптималдуу тартипте өткөрөт. Бул учурда, эң көп автоунаасы бар тилке өткөрүлмөк, андыктан азыраак унаасы бар тилке бош туруп, абанын булганышын азайтат. Бул кесилиш жолдо машиналар жок, ал эми көптөгөн унаалар токтоп калган учурларды жок кылат. Бул ар бир адамдын убактысын үнөмдөп эле койбостон, айлана -чөйрөнү да үнөмдөйт. Адамдар мотору бош турганда токтоочу белгиге токтоп турган убактысы абанын булганышын көбөйтөт, андыктан акылдуу светофор түзүү менен, мен машиналардын токтоп турган убактысын эң аз өткөрүш үчүн жарык үлгүлөрүн оптималдаштыра алам.. Акыр -аягы, бул светофор системасы шаарларда, шаар четинде, ал тургай айыл жергесинде колдонулушу мүмкүн, анткени адамдар абанын булганышын азайтышат.

1 -кадам: Бөлүктөрдүн тизмеси

Материалдар:

Raspberry Pi 3 Model B v1.2

Raspberry Pi Camera v2.1

5V/1A микро USB энергия булагы

HDMI монитор, клавиатура, чычкан SD картасы Raspbian Jessie менен

Raspberry Pi GPIO кабели

Кызыл, сары, жашыл LED (ар бир түстөн 2)

Raspberry Pi үчүн аял коннекторлору (7 уникалдуу түстөр)

Ассорти 24 өлчөөчү зым (ар кандай түстөр) + жылуулукту кысуучу түтүк

2'x2 'жыгач панели же платформа

Жыгач бурамалары

Кара бети (картон, көбүк, плакат, ж.

Жол белгилери үчүн ак (же кара түстөн башка түстөгү) тасма

Кара спрей боек (ПВХ үчүн)

½”90 градус чыканак муундары бар PVC түтүк (2), T розеткасы (1), аял адаптери (2)

Куралдар

Кандооч

3D принтер

Ар кандай бургучтар менен бургулаңыз

Breadboard

Жылуулук курал

2 -кадам: Raspberry Pi орнотуу

SD картаны Raspberry Piге жүктөп, жүктөңүз.

OpenCVге керектүү китепканаларды орнотуу үчүн бул көрсөтмөнү аткарыңыз. Бул кадамды жасоого убактыңыз бар экенин тактаңыз, анткени OpenCV китепканасын орнотуу бир нече саатка созулушу мүмкүн. Камераңызды бул жерге орнотуп, орнотууну унутпаңыз.

Сиз ошондой эле пип орнотушуңуз керек:

пикамера

gpiozero

RPi. GPIO

Бул жерде такталган код:

picamera.array импортунан PiRGBArray

пикамерадан PiCamera импорттоо

picamera.array импорттоо

np катары numpy импорттоо

импорттоо убактысы

cv2 импорттоо

GPO катары RPi. GPIO импорттоо

импорттоо убактысы

GPIO.setmode (GPIO. BCM)

i үчүн (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

чийки = PiRGBArray (камера, өлчөмү = (480, 480))

убакыт.уйку (0.1)

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

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

initvert = 0

inithoriz = 0

эсептегич = 0

cam.capture_continuous ичиндеги кадр үчүн (raw, format = "bgr", use_video_port = True):

кадр = кадр.чаар

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

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

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

маска = cv2.dilate (маска, Жок, кайталоолор = 5)

маска = cv2.erode (маска, Жок, кайталоолор = 1)

маска = cv2.dilate (маска, Жок, кайталоолор = 3)

мен, эгин = cv2. босого (маска, 127, 255, cv2. THRESH_BINARY)

cnts = cv2.findContours (кырман, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]

борбору = Жок

vert = 0

горизонт = 0

if len (cnts)> 0:

cnts үчүн c үчүн:

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

борбору = (int (x), int (y))

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

cv2.circle (кадр, борбор, радиус, (0, 255, 0), 2)

x = int (x)

y = int (y)

эгер 180 <x <300:

эгер y> 300:

vert = vert +1

elif y <180:

vert = vert +1

башка:

vert = vert

эгер 180 <y <300:

эгер х> 300:

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

elif x <180:

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

башка:

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

эгер vert! = initvert:

басып чыгаруу "Машиналар вертикалдуу тилкеде:" + str (vert)

initvert = vert

басып чыгаруу "Унаалар горизонталдык тилкеде:" + str (горизонт)

inithoriz = горизонт

басып чыгаруу '----------------------------'

if horiz! = inithoriz:

басып чыгаруу "Автоунаалар вертикалдуу тилкеде:" + str (vert)

initvert = vert

басып чыгаруу "Унаалар горизонталдык тилкеде:" + str (горизонт)

inithoriz = горизонт

басып чыгаруу '----------------------------'

эгер вер <горизонт:

GPIO.output (23, GPIO. HIGH)

GPIO.output (21, GPIO. HIGH)

GPIO.output (16, GPIO. LOW)

GPIO.output (25, GPIO. LOW)

эгер горизонт <vert:

GPIO.output (16, GPIO. HIGH)

GPIO.output (25, GPIO. HIGH)

GPIO.output (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow ("Frame", frame)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Кыркуу", бастыруу)

raw.truncate (0)

эгер cv2.waitKey (1) & 0xFF == ord ('q'):

тыныгуу

cv2.destroyAllWindows ()

GPIO.cleanup ()

3 -кадам: Raspberry Pi жана Camera Mount

Raspberry Pi жана камера тоосу
Raspberry Pi жана камера тоосу
Raspberry Pi жана камера тоосу
Raspberry Pi жана камера тоосу
Raspberry Pi жана камера тоосу
Raspberry Pi жана камера тоосу
Raspberry Pi жана камера тоосу
Raspberry Pi жана камера тоосу

Корпусту жана камераны 3D басып чыгаруу жана чогултуу.

4 -кадам: Светофордун чогулушу

Светофордун чогулушу
Светофордун чогулушу
Светофордун чогулушу
Светофордун чогулушу
Светофордун чогулушу
Светофордун чогулушу

Жол чыракты нан тактасы менен сынап көрүңүз. Светодиоддордун ар бир каршы топтому анодду бөлүшөт, жана алардын бардыгы жалпы катодду (жерди) бөлүшөт. Жалпысынан 7 киргизүү зымы болушу керек: 1 ар бир жуп LEDS үчүн (6) + 1 жерге зым. Светофорлорду эритип, кураштырыңыз.

5 -кадам: Зымдоо (1 -бөлүк)

Кабелдер (1 -бөлүк)
Кабелдер (1 -бөлүк)
Кабелдер (1 -бөлүк)
Кабелдер (1 -бөлүк)
Кабелдер (1 -бөлүк)
Кабелдер (1 -бөлүк)
Кабелдер (1 -бөлүк)
Кабелдер (1 -бөлүк)

Ургаачынын башын 5 футка жакын зымга туташтырыңыз. Бул зымдар кийинчерээк ПВХ түтүктөрү аркылуу жыла турган тараптар. Жарыктардын ар кандай топтомдорун айырмалай билиңиз (2 x 3 түс жана 1 жер). Бул учурда, мен дагы бир кызыл, сары жана көк зымдардын учтарын курч менен белгилеп койгом, ошондуктан кайсынысы экенин билем.

6 -кадам: Айлана -чөйрөнү куруу

Курчап турган чөйрөнү куруу
Курчап турган чөйрөнү куруу
Курчап турган чөйрөнү куруу
Курчап турган чөйрөнү куруу
Курчап турган чөйрөнү куруу
Курчап турган чөйрөнү куруу
Курчап турган чөйрөнү куруу
Курчап турган чөйрөнү куруу

Айлана -чөйрөнү куруу 2 фут чарчы жыгач палетасын ушундай кылыңыз. Жыгачтын сыныгы жакшы, анткени ал жабылат. Адаптериңизге туура келген тешикти бургулаңыз. Пластикалык түтүктү паллеттин капталынан бурап, бургулаңыз. Кара көбүк тактайын астындагы жыгач палетке дал келтирүү үчүн кесип алыңыз. ПВХ түтүгүнүн тегерегине туура келген тешикти бургулаңыз. Каршы бурчта кайталаңыз. Жолдорду ак тасма менен белгилеңиз.

7 -кадам: PVC алкакты бүтүрүү

ПВХ алкагын бүтүрүү
ПВХ алкагын бүтүрүү
ПВХ алкагын бүтүрүү
ПВХ алкагын бүтүрүү
ПВХ алкагын бүтүрүү
ПВХ алкагын бүтүрүү

Үстүнкү түтүктө бир тутам зымга бата турган тешикти бургула. Түтүктөрдүн ичине кире алганча, орой тешик жакшы. Зымдарды сыноо үчүн PVC түтүктөр жана чыканак муундары аркылуу жылан. Баары аяктагандан кийин, негизги фреймдин көрүнүшүн тазалоо үчүн ПВХны кара боёк менен боёп коюңуз. ПВХ түтүктөрүнүн бириндеги кичинекей боштукту кесип, Т-муунга ылайыкташтырыңыз. Светофордун илинип турушу үчүн бул т-ге ПВХ түтүгүн кошуңуз. Диаметри негизги фреймге окшош болушу мүмкүн (1/2 ), бирок сиз жука түтүктү колдонсоңуз, 7 зым жылып өтөрүн текшериңиз. Бул трубадан светофор илинип турушу үчүн тешик жасаңыз.

8 -кадам: Зым тартуу (2 -бөлүк)

Кабелдер (2 -бөлүк)
Кабелдер (2 -бөлүк)
Кабелдер (2 -бөлүк)
Кабелдер (2 -бөлүк)
Кабелдер (2 -бөлүк)
Кабелдер (2 -бөлүк)

Баарын мурун сыналгандай кайра өткөрүңүз. Светофорду жана зымдарды панель менен эки жолу текшерип, бардык байланыштар жасалганын ырастаңыз. Жол чыракты Т-муунунун колу аркылуу келген зымдарга кошуп коюңуз. Ачык зымдарды электр лента менен ороп, кандайдыр бир шорты болбошу үчүн жана таза көрүнүшү үчүн.

9 -кадам: Бүттү

Бүттү!
Бүттү!
Бүттү!
Бүттү!
Бүттү!
Бүттү!
Бүттү!
Бүттү!

Кодду иштетүү үчүн, булагыңызды ~/.profile жана cd катары долбооруңузга коюуну унутпаңыз.

10 -кадам: Кошумчалар (Сүрөттөр)

Сунушталууда: