Daftar Isi:

Traffic Pattern Analyzer Menggunakan Live Object Detection: 11 Langkah (dengan Gambar)
Traffic Pattern Analyzer Menggunakan Live Object Detection: 11 Langkah (dengan Gambar)

Video: Traffic Pattern Analyzer Menggunakan Live Object Detection: 11 Langkah (dengan Gambar)

Video: Traffic Pattern Analyzer Menggunakan Live Object Detection: 11 Langkah (dengan Gambar)
Video: Object Detection in 10 minutes with YOLOv5 & Python! 2024, November
Anonim
Image
Image
Penganalisis Pola Lalu Lintas Menggunakan Deteksi Objek Langsung
Penganalisis Pola Lalu Lintas Menggunakan Deteksi Objek Langsung

Di dunia sekarang ini, lampu lalu lintas sangat penting untuk jalan yang aman. Namun, sering kali, lampu lalu lintas dapat mengganggu dalam situasi di mana seseorang mendekati lampu saat lampu menyala merah. Ini membuang-buang waktu, terutama jika lampu menghalangi satu kendaraan melewati persimpangan saat tidak ada orang lain di jalan. Inovasi saya adalah lampu lalu lintas pintar yang menggunakan deteksi objek langsung dari kamera untuk menghitung jumlah mobil di setiap jalan. Perangkat keras yang akan saya gunakan untuk proyek ini adalah Raspberry Pi 3, modul kamera, dan berbagai perangkat keras elektronik untuk lampu itu sendiri. Menggunakan OpenCV pada Raspberry Pi, informasi yang dikumpulkan akan dijalankan melalui kode yang mengontrol LED melalui GPIO. Tergantung pada angka-angka ini, lampu lalu lintas akan berubah, membiarkan mobil lewat dengan urutan yang paling optimal. Dalam hal ini, jalur dengan mobil paling banyak akan dibiarkan lewat sehingga jalur dengan mobil yang lebih sedikit akan menganggur, mengurangi polusi udara. Ini akan menghilangkan situasi ketika banyak mobil berhenti sementara tidak ada mobil di jalan yang berpotongan. Ini tidak hanya menghemat waktu untuk semua orang, tetapi juga menyelamatkan lingkungan. Jumlah waktu orang berhenti di rambu berhenti dengan mesin mereka idling meningkatkan jumlah polusi udara, jadi dengan membuat lampu lalu lintas yang cerdas, saya dapat mengoptimalkan pola lampu sehingga mobil menghabiskan waktu sesedikit mungkin saat kendaraan mereka berhenti. Pada akhirnya, sistem lampu lalu lintas ini dapat diterapkan di kota-kota, pinggiran kota, atau bahkan pedesaan agar lebih efisien bagi masyarakat akan mengurangi polusi udara.

Langkah 1: Daftar Bagian

Bahan:

Raspberry Pi 3 Model B v1.2

Kamera Raspberry Pi v2.1

Catu daya mikro USB 5V / 1A

Monitor HDMI, keyboard, kartu SD mouse dengan Raspbian Jessie

Kabel breakout Raspberry Pi GPIO

LED merah, kuning, hijau (2 dari setiap warna)

Konektor perempuan untuk Raspberry Pi (7 warna unik)

Berbagai macam kawat pengukur 24 (warna berbeda) + tabung panas menyusut

Panel atau platform kayu 2'x2'

Sekrup kayu

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

Pita putih (atau warna apa pun selain hitam) untuk marka jalan

Cat semprot hitam (untuk PVC)

” Pipa PVC dengan sambungan siku 90 derajat (2), soket T (1), adaptor perempuan (2)

Peralatan

Solder Besi

Pencetak 3D

Bor dengan berbagai mata bor

Papan tempat memotong roti

Pistol panas

Langkah 2: Menyiapkan Raspberry Pi

Muat kartu SD ke Raspberry Pi dan boot.

Ikuti panduan ini untuk menginstal pustaka OpenCV yang diperlukan. Pastikan Anda memiliki waktu untuk melakukan langkah ini, karena menginstal pustaka OpenCV dapat memakan waktu beberapa jam. Pastikan juga untuk memasang dan menyiapkan kamera Anda di sini.

Anda juga harus menginstal pip:

kamera foto

gpiozero

RPi. GPIO

Berikut adalah kode yang sudah selesai:

dari picamera.array impor PiRGArray

dari picamera impor PiCamera

impor picamera.array

impor numpy sebagai np

waktu impor

impor cv2

impor RPi. GPIO sebagai GPIO

waktu impor

GPIO.setmode(GPIO. BCM)

untuk saya di (23, 25, 16, 21):

GPIO.setup(i, GPIO. OUT)

kamera = PiKamera()

cam.resolusi=(480, 480)

cam.framerate=30

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

waktu.tidur(0.1)

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

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

initvert = 0

inithoriz = 0

penghitung = 0

untuk bingkai di cam.capture_continuous(raw, format="bgr", use_video_port=True):

bingkai = bingkai.array

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

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

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

mask= cv2.dilate(mask, Tidak ada, iterasi=5)

mask= cv2.erode(mask, Tidak ada, iterasi=1)

mask= cv2.dilate(mask, Tidak Ada, iterasi=3)

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

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

pusat = Tidak ada

puncak = 0

horiz = 0

jika len(cnts) > 0:

untuk c di cnts:

(x, y), radius = cv2.minEnclosingCircle(c)

pusat = (int(x), int(y))

jari-jari = int(jari-jari)

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

x = int(x)

y = int(y)

jika 180 < x < 300:

jika y > 300:

simpul = simpul +1

elif y < 180:

simpul = simpul +1

lain:

simpul = simpul

jika 180 < y < 300:

jika x > 300:

horiz = horiz +1

elif x < 180:

horiz = horiz +1

lain:

horiz = horiz

jika vert != initvert:

print"Mobil di jalur vertikal: " + str(vert)

initvert = vert

print"Mobil di jalur mendatar: " + str(horiz)

inithoriz = horiz

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

jika horiz != inithoriz:

print"Mobil di jalur vertikal: " + str(vert)

initvert = vert

print"Mobil di jalur mendatar: " + str(horiz)

inithoriz = horiz

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

jika vert < horiz:

GPIO.keluaran(23, GPIO. TINGGI)

GPIO.output(21, GPIO. HIGH)

GPIO.output(16, GPIO. LOW)

GPIO.output(25, GPIO. LOW)

jika horiz < vert:

GPIO.keluaran (16, GPIO. TINGGI)

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("Arik", ambang)

mentah.truncate(0)

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

merusak

cv2.destroySemuaWindows()

GPIO.pembersihan()

Langkah 3: Raspberry Pi dan Kamera Mount

Raspberry Pi dan Dudukan Kamera
Raspberry Pi dan Dudukan Kamera
Raspberry Pi dan Dudukan Kamera
Raspberry Pi dan Dudukan Kamera
Raspberry Pi dan Dudukan Kamera
Raspberry Pi dan Dudukan Kamera
Raspberry Pi dan Dudukan Kamera
Raspberry Pi dan Dudukan Kamera

Cetak 3D casing dan kamera dipasang dan dirakit.

Langkah 4: Perakitan Lampu Lalu Lintas

Perakitan Lampu Lalu Lintas
Perakitan Lampu Lalu Lintas
Perakitan Lampu Lalu Lintas
Perakitan Lampu Lalu Lintas
Perakitan Lampu Lalu Lintas
Perakitan Lampu Lalu Lintas

Uji lampu lalu lintas dengan papan tempat memotong roti. Setiap set LED yang berlawanan berbagi anoda, dan semuanya berbagi katoda (tanah) yang sama. Harus ada total 7 kabel input: 1 untuk setiap pasang LED (6) + 1 kabel ground. Solder dan pasang lampu lalu lintas.

Langkah 5: Pengkabelan (Bagian 1)

Pengkabelan (Bagian 1)
Pengkabelan (Bagian 1)
Pengkabelan (Bagian 1)
Pengkabelan (Bagian 1)
Pengkabelan (Bagian 1)
Pengkabelan (Bagian 1)
Pengkabelan (Bagian 1)
Pengkabelan (Bagian 1)

Solder pin header betina ke sekitar 5 kaki kawat. Ini adalah sisi-sisi yang nantinya akan dililitkan kabel-kabel ini melalui pipa PVC. Pastikan untuk dapat membedakan set lampu yang berbeda (2 x 3 warna dan 1 ground). Dalam hal ini, saya menandai ujung satu set kabel merah, kuning, dan biru dengan sharpie jadi saya tahu yang mana.

Langkah 6: Membangun Lingkungan

Membangun Lingkungan
Membangun Lingkungan
Membangun Lingkungan
Membangun Lingkungan
Membangun Lingkungan
Membangun Lingkungan
Membangun Lingkungan
Membangun Lingkungan

Membangun lingkungan Buat palet kayu persegi 2 kaki seperti ini. Kayu bekas baik-baik saja karena akan ditutup-tutupi. Bor lubang yang pas dengan adaptor Anda. Bor sekrup melalui sisi palet untuk mengamankan pipa PVC pada tempatnya. Potong papan busa hitam agar sesuai dengan palet kayu di bawahnya. Bor lubang yang pas di sekitar pipa PVC. Ulangi di sudut yang berlawanan. Tandai jalan dengan selotip putih.

Langkah 7: Menyelesaikan Bingkai PVC

Menyelesaikan Bingkai PVC
Menyelesaikan Bingkai PVC
Menyelesaikan Bingkai PVC
Menyelesaikan Bingkai PVC
Menyelesaikan Bingkai PVC
Menyelesaikan Bingkai PVC

Di pipa atas, bor lubang yang dapat memuat seikat kabel. Sebuah lubang kasar baik-baik saja selama Anda dapat mengakses bagian dalam pipa. Ulirkan kabel melalui pipa PVC dan sambungan siku untuk uji kecocokan. Setelah semuanya selesai, cat PVC dengan cat semprot hitam untuk membersihkan tampilan rangka utama. Potong celah kecil di salah satu pipa PVC agar sesuai dengan T-joint. Tambahkan pipa PVC ke t-joint ini untuk menggantung lampu lalu lintas. Diameternya bisa sama dengan rangka utama (1/2 ), tetapi jika Anda menggunakan pipa yang lebih tipis, pastikan 7 kabel dapat menembus. Bor lubang melalui pipa ini untuk menggantung lampu lalu lintas.

Langkah 8: Pengkabelan (Bagian 2)

Pengkabelan (Bagian 2)
Pengkabelan (Bagian 2)
Pengkabelan (Bagian 2)
Pengkabelan (Bagian 2)
Pengkabelan (Bagian 2)
Pengkabelan (Bagian 2)

Re-wire semuanya seperti yang diuji sebelumnya. Periksa kembali lampu lalu lintas dan kabel dengan papan tempat memotong roti untuk memastikan semua sambungan telah dibuat. Solder lampu lalu lintas ke kabel yang datang melalui lengan T-joint. Bungkus kabel yang terbuka dengan pita listrik untuk mencegah celana pendek dan untuk tampilan yang lebih bersih.

Langkah 9: Selesai

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

Untuk menjalankan kode, pastikan untuk mengatur sumber Anda sebagai ~/.profile dan cd ke lokasi proyek Anda.

Langkah 10: Ekstra (Foto)

Direkomendasikan: