Isi kandungan:

Penganalisis Corak Lalu Lintas Menggunakan Pengesanan Objek Langsung: 11 Langkah (dengan Gambar)
Penganalisis Corak Lalu Lintas Menggunakan Pengesanan Objek Langsung: 11 Langkah (dengan Gambar)

Video: Penganalisis Corak Lalu Lintas Menggunakan Pengesanan Objek Langsung: 11 Langkah (dengan Gambar)

Video: Penganalisis Corak Lalu Lintas Menggunakan Pengesanan Objek Langsung: 11 Langkah (dengan Gambar)
Video: Tes Kemampuan Otak 2024, Julai
Anonim
Image
Image
Penganalisis Corak Lalu Lintas Menggunakan Pengesanan Objek Langsung
Penganalisis Corak Lalu Lintas Menggunakan Pengesanan Objek Langsung

Di dunia hari ini, lampu isyarat penting untuk jalan raya yang selamat. Namun, berkali-kali, lampu isyarat boleh mengganggu dalam keadaan di mana seseorang menghampiri lampu sama seperti lampu merah. Ini membuang masa, terutamanya jika lampu menghalang satu kenderaan memasuki persimpangan ketika tidak ada orang lain di jalan raya. Inovasi saya adalah lampu isyarat pintar yang menggunakan pengesanan objek langsung dari kamera untuk mengira jumlah kereta di setiap jalan. Perkakasan yang akan saya gunakan untuk projek ini adalah Raspberry Pi 3, modul kamera, dan pelbagai perkakasan elektronik untuk cahaya itu sendiri. Dengan menggunakan OpenCV pada Raspberry Pi, maklumat yang dikumpulkan akan dijalankan melalui kod yang mengawal LED melalui GPIO. Bergantung pada nombor ini, lampu isyarat akan berubah, membiarkan kereta masuk dalam urutan yang paling optimum. Dalam hal ini, jalur dengan banyak mobil akan dilewati sehingga jalur dengan lebih sedikit kereta akan menganggur, mengurangkan pencemaran udara. Ini akan menghilangkan keadaan apabila banyak kereta dihentikan sementara tidak ada kereta di jalan yang bersilang. Ini bukan sahaja menjimatkan masa untuk semua orang, tetapi juga menyelamatkan alam sekitar. Jumlah masa orang berhenti di tanda berhenti dengan enjin mereka melahu meningkatkan jumlah pencemaran udara, jadi dengan membuat lampu isyarat yang cerdas, saya dapat mengoptimumkan corak cahaya sehingga kereta menghabiskan waktu paling sedikit dengan kenderaan mereka berhenti. Pada akhirnya, sistem lampu isyarat ini dapat diimplementasikan di kota, pinggir kota, atau bahkan di luar bandar agar lebih efisien bagi orang akan mengurangi pencemaran udara.

Langkah 1: Senarai Bahagian

Bahan:

Raspberry Pi 3 Model B v1.2

Kamera Raspberry Pi v2.1

Bekalan kuasa USB mikro 5V / 1A

Monitor HDMI, papan kekunci, kad SD tetikus dengan Raspbian Jessie

Kabel pelarian Raspberry Pi GPIO

LED merah, kuning, hijau (2 setiap warna)

Penyambung wanita untuk Raspberry Pi (7 warna unik)

Pelbagai wayar 24 tolok (warna berbeza) + tiub pengecutan haba

Panel atau platform kayu 2'x2 '

Skru kayu

Permukaan hitam (kadbod, papan busa, papan poster, dll.)

Pita putih (atau warna selain hitam) untuk tanda jalan

Cat semburan hitam (untuk PVC)

Pipa PVC dengan sambungan siku 90 darjah (2), soket T (1), penyesuai wanita (2)

Alat

Besi pematerian

Pencetak 3D

Gerudi dengan pelbagai bit gerudi

Papan roti

Pistol haba

Langkah 2: Menyiapkan Raspberry Pi

Masukkan kad SD ke dalam Raspberry Pi dan boot.

Ikuti panduan ini untuk memasang perpustakaan OpenCV yang diperlukan. Pastikan anda mempunyai masa untuk melakukan langkah ini, kerana memasang perpustakaan OpenCV dapat memakan waktu beberapa jam. Pastikan juga memasang dan menyiapkan kamera anda di sini.

Anda juga harus memasang pip:

picamera

gpiozero

RPi. GPIO

Berikut adalah kod akhir:

dari picamera.array import PiRGBArray

dari picamera import PiCamera

import picamera.array

import numpy sebagai np

masa import

import cv2

import RPi. GPIO sebagai GPIO

masa import

GPIO.setmode (GPIO. BCM)

untuk i in (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

cam = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

mentah = PiRGBArray (cam, ukuran = (480, 480))

masa. tidur (0.1)

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

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

initvert = 0

inithoriz = 0

pembilang = 0

untuk bingkai dalam cam.capture_continuous (mentah, format = "bgr", use_video_port = True):

bingkai = frame.array

hsv = cv2.cvtWarna (bingkai, cv2. COLOR_BGR2HSV)

topeng = cv2.inRange (hsv, colorLower, colorUpper)

topeng = cv2.blur (topeng, (3, 3))

topeng = cv2.dilate (topeng, Tiada, lelaran = 5)

mask = cv2.erode (topeng, Tiada, lelaran = 1)

mask = cv2.dilate (topeng, Tiada, lelaran = 3)

saya, ambang = cv2.threshold (topeng, 127, 255, cv2. THRESH_BINARY)

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

pusat = Tiada

vert = 0

ufuk = 0

jika len (cnts)> 0:

untuk c dalam cnts:

(x, y), jejari = cv2.minMenutupLingkaran (c)

tengah = (int (x), int (y))

jejari = int (jejari)

cv2.circle (bingkai, tengah, jejari, (0, 255, 0), 2)

x = int (x)

y = int (y)

jika 180 <x <300:

jika y> 300:

vert = vert +1

elif y <180:

vert = vert +1

lain:

vert = vert

jika 180 <y <300:

jika x> 300:

horiz = horiz +1

elif x <180:

horiz = horiz +1

lain:

cakera = ufuk

jika vert! = terbalik:

cetak "Kereta di lorong menegak:" + str (vert)

initvert = vert

cetak "Kereta di lorong mendatar:" + str (horizontal)

inithoriz = cakrawala

cetak '----------------------------'

jika horiz! = inithoriz:

cetak "Kereta di lorong menegak:" + str (vert)

initvert = vert

cetak "Kereta di lorong mendatar:" + str (horizontal)

inithoriz = cakrawala

cetak '----------------------------'

jika vert <horiz:

GPIO.output (23, GPIO. HIGH)

GPIO.output (21, GPIO. HIGH)

GPIO.output (16, GPIO. LOW)

GPIO.output (25, GPIO. LOW)

jika horizontal <vert:

GPIO.output (16, GPIO. HIGH)

GPIO.output (25, GPIO. HIGH)

GPIO.output (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow ("Bingkai", bingkai)

cv2.imshow ("HSV", hsv)

cv2.imshow ("Thresh", ambang)

mentah. memotong (0)

jika cv2.waitKey (1) & 0xFF == ord ('q'):

rehat

cv2.destroyAllWindows ()

GPIO.cleanup ()

Langkah 3: Raspberry Pi dan Camera Mount

Raspberry Pi dan Pemasangan Kamera
Raspberry Pi dan Pemasangan Kamera
Raspberry Pi dan Pemasangan Kamera
Raspberry Pi dan Pemasangan Kamera
Raspberry Pi dan Pemasangan Kamera
Raspberry Pi dan Pemasangan Kamera
Raspberry Pi dan Pemasangan Kamera
Raspberry Pi dan Pemasangan Kamera

3D mencetak sarung dan memasang kamera dan memasang.

Langkah 4: Perhimpunan Lampu Lalu Lintas

Perhimpunan Lampu Lalu Lintas
Perhimpunan Lampu Lalu Lintas
Perhimpunan Lampu Lalu Lintas
Perhimpunan Lampu Lalu Lintas
Perhimpunan Lampu Lalu Lintas
Perhimpunan Lampu Lalu Lintas

Uji lampu isyarat dengan papan roti. Setiap set LED yang berlainan berkongsi anod, dan semuanya berkongsi katod (tanah) yang sama. Perlu ada 7 wayar input: 1 untuk setiap pasangan LEDS (6) + 1 wayar ground. Memateri dan memasang lampu isyarat.

Langkah 5: Pendawaian (Bahagian 1)

Pendawaian (Bahagian 1)
Pendawaian (Bahagian 1)
Pendawaian (Bahagian 1)
Pendawaian (Bahagian 1)
Pendawaian (Bahagian 1)
Pendawaian (Bahagian 1)
Pendawaian (Bahagian 1)
Pendawaian (Bahagian 1)

Pateri pin header wanita hingga kira-kira 5 kaki wayar. Ini adalah sisi yang wayar ini akan masuk melalui paip PVC di kemudian hari. Pastikan anda dapat membezakan set lampu yang berbeza (2 x 3 warna dan 1 tanah). Dalam kes ini, saya menandakan hujung kabel wayar merah, kuning, dan biru yang lain dengan tajam sehingga saya tahu yang mana.

Langkah 6: Membangunkan Alam Sekitar

Membangunkan Alam Sekitar
Membangunkan Alam Sekitar
Membangunkan Alam Sekitar
Membangunkan Alam Sekitar
Membangunkan Alam Sekitar
Membangunkan Alam Sekitar
Membangunkan Alam Sekitar
Membangunkan Alam Sekitar

Membina persekitaran Membuat palet kayu 2 kaki persegi seperti ini. Kayu sekerap baik kerana akan ditutup. Bor lubang yang hanya sesuai dengan penyesuai anda. Bor skru melalui sisi palet untuk menahan paip PVC ke tempatnya. Potong papan busa hitam agar sesuai dengan palet kayu di bawahnya. Bor lubang yang sesuai dengan paip PVC. Ulangi di sudut bertentangan. Tandakan jalan dengan pita putih.

Langkah 7: Memuktamadkan Rangka PVC

Memuktamadkan Rangka PVC
Memuktamadkan Rangka PVC
Memuktamadkan Rangka PVC
Memuktamadkan Rangka PVC
Memuktamadkan Rangka PVC
Memuktamadkan Rangka PVC

Di paip atas, gerudi lubang yang boleh memuatkan kabel. Lubang kasar baik selama anda boleh memasuki bahagian dalam paip. Pasangkan wayar melalui paip PVC dan sendi siku untuk ujian yang sesuai. Setelah semuanya selesai, cat PVC dengan cat semburan hitam untuk membersihkan rupa bingkai utama. Potong jurang kecil di salah satu paip PVC agar sesuai dengan T-joint. Tambahkan paip PVC ke t-sendi ini agar lampu isyarat tergantung. Diameternya bisa sama dengan kerangka utama (1/2 ), walaupun jika Anda menggunakan paip yang lebih tipis, pastikan 7 wayar dapat masuk. Bor lubang melalui paip ini agar lampu isyarat tergantung.

Langkah 8: Pendawaian (Bahagian 2)

Pendawaian (Bahagian 2)
Pendawaian (Bahagian 2)
Pendawaian (Bahagian 2)
Pendawaian (Bahagian 2)
Pendawaian (Bahagian 2)
Pendawaian (Bahagian 2)

Pasang semula semuanya seperti yang diuji sebelumnya. Periksa semula lampu isyarat dan pendawaian dengan papan roti untuk mengesahkan semua sambungan telah dibuat. Memasukkan lampu isyarat ke wayar yang melalui lengan T-sendi. Balut wayar yang terdedah dengan pita elektrik untuk mengelakkan seluar pendek dan kelihatan lebih bersih.

Langkah 9: Selesai

Selesai!
Selesai!
Selesai!
Selesai!
Selesai!
Selesai!
Selesai!
Selesai!

Untuk menjalankan kod, pastikan untuk menetapkan sumber anda sebagai ~ /.profile dan cd ke lokasi projek anda.

Langkah 10: Ekstra (Foto)

Disyorkan: