İçindekiler:

Canlı Nesne Algılamayı Kullanan Trafik Modeli Analizörü: 11 Adım (Resimlerle)
Canlı Nesne Algılamayı Kullanan Trafik Modeli Analizörü: 11 Adım (Resimlerle)

Video: Canlı Nesne Algılamayı Kullanan Trafik Modeli Analizörü: 11 Adım (Resimlerle)

Video: Canlı Nesne Algılamayı Kullanan Trafik Modeli Analizörü: 11 Adım (Resimlerle)
Video: Sağlıkta mühendislik çözümleri 2024, Temmuz
Anonim
Image
Image
Canlı Nesne Algılamayı Kullanan Trafik Modeli Çözümleyicisi
Canlı Nesne Algılamayı Kullanan Trafik Modeli Çözümleyicisi

Günümüz dünyasında, trafik ışıkları güvenli bir yol için gereklidir. Bununla birlikte, çoğu zaman, trafik ışıkları, kırmızıya dönerken birinin ışığa yaklaştığı durumlarda can sıkıcı olabilir. Bu, özellikle yolda başka kimse olmadığında ışık tek bir aracın kavşaktan geçmesini engelliyorsa zaman kaybettirir. Yeniliğim, her yoldaki araba sayısını saymak için bir kameradan canlı nesne algılamayı kullanan akıllı bir trafik ışığı. Bu proje için kullanacağım donanım bir Raspberry Pi 3, bir kamera modülü ve ışığın kendisi için çeşitli elektronik donanımlardır. Raspberry Pi'de OpenCV kullanılarak toplanan bilgiler, LED'leri GPIO aracılığıyla kontrol eden kod aracılığıyla çalıştırılacaktır. Bu sayılara bağlı olarak, trafik ışığı değişecek ve arabaların en uygun sırada geçmesine izin verecektir. Bu durumda, en çok arabanın olduğu şerit, daha az arabanın olduğu şerit boşta kalacak ve hava kirliliğini azaltacak şekilde geçilecek. Bu, kesişen yolda hiç araba yokken birçok arabanın durduğu durumları ortadan kaldıracaktır. Bu sadece herkes için zaman kazandırmakla kalmaz, aynı zamanda çevreyi de korur. İnsanların motorları rölantideyken bir dur işaretinde durduruldukları süre hava kirliliği miktarını artırıyor, bu nedenle akıllı bir trafik ışığı oluşturarak, arabaların araçları dururken mümkün olan en az zamanı harcaması için ışık düzenlerini optimize edebiliyorum.. Sonuç olarak, bu trafik ışığı sistemi şehirlerde, banliyölerde ve hatta kırsal alanlarda uygulanarak insanlar için daha verimli olması hava kirliliğini azaltacaktır.

Adım 1: Parça Listesi

Malzemeler:

Raspberry Pi 3 Model B v1.2

Ahududu Pi Kamera v2.1

5V/1A mikro USB güç kaynağı

Raspbian Jessie ile HDMI monitör, klavye, fare SD kartı

Raspberry Pi GPIO koparma kablosu

Kırmızı, sarı, yeşil LED'ler (her renkten 2 adet)

Raspberry Pi için dişi konektörler (7 benzersiz renk)

Çeşitli 24 gauge tel (farklı renkler) + ısıyla daralan makaron

2'x2' ahşap panel veya platform

Tahta çivileri

Siyah yüzey (karton, köpük pano, poster panosu vb.)

Yol işaretleri için beyaz (veya siyah dışında herhangi bir renk) bant

Siyah sprey boya (PVC için)

90 derece dirsek bağlantılı ½” PVC boru(2), T soket (1), dişi adaptör (2)

Aletler

Havya

3 boyutlu yazıcı

Çeşitli matkap uçları ile matkap

ekmek tahtası

Isı tabancası

2. Adım: Ahududu Pi'yi Ayarlama

SD kartı Raspberry Pi'ye yükleyin ve başlatın.

Gerekli OpenCV kitaplıklarını kurmak için bu kılavuzu izleyin. OpenCV kitaplığının yüklenmesi birkaç saat sürebileceğinden, bu adımı yapmak için zamanınız olduğundan emin olun. Ayrıca kameranızı buraya kurduğunuzdan ve ayarladığınızdan emin olun.

Ayrıca pip kurulumunu da yapmalısınız:

fotoğraf makinesi

gpiozero

RPi. GPIO

İşte kesinleşmiş kod:

picamera.array'den PiRGBArray'i içe aktar

picamera'dan içe aktarma PiCamera

picamera.array'i içe aktar

numpy'yi np olarak içe aktar

ithalat zamanı

cv2'yi içe aktar

RPi. GPIO'yu GPIO olarak içe aktar

ithalat zamanı

GPIO.setmode(GPIO. BCM)

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

GPIO.setup(i, GPIO. OUT)

kamera = PiCamera()

kamera.çözünürlük=(480, 480)

kamera.çerçeve hızı=30

ham=PiRGBArray(kamera, boyut=(480, 480))

zaman.uyku(0.1)

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

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

initvert = 0

başlangıç = 0

sayaç = 0

cam.capture_continuous(raw, format="bgr", use_video_port=True) içindeki çerçeve için:

çerçeve = çerçeve.dizi

hsv = cv2.cvtColor(çerçeve, cv2. COLOR_BGR2HSV)

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

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

maske= cv2.dilate(maske, Yok, yinelemeler=5)

maske= cv2.erode(maske, Yok, yineleme=1)

maske= cv2.dilate(maske, Yok, yinelemeler=3)

ben, eşik = cv2.threshold(maske, 127, 255, cv2. THRESH_BINARY)

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

merkez = Yok

dikey = 0

ufuk = 0

len(cnts) > 0 ise:

cnts'de c için:

(x, y), yarıçap = cv2.minEnclosingCircle(c)

merkez = (int(x), int(y))

yarıçap = int(yarıçap)

cv2.circle(çerçeve, merkez, yarıçap, (0, 255, 0), 2)

x = int(x)

y = int(y)

180 < x < 300 ise:

y > 300 ise:

dikey = dikey +1

elif y < 180:

dikey = dikey +1

Başka:

dikey = dikey

180 < y < 300 ise:

x > 300 ise:

ufuk = yatay +1

elif x < 180:

ufuk = yatay +1

Başka:

ufuk = ufuk

eğer dikey != initvert:

print"Dikey şeritte arabalar: " + str(vert)

initvert = dikey

print"Yatay şeritteki arabalar: " + str(horiz)

inithoriz = ufuk

Yazdır '----------------------------'

eğer ufuk != inthoriz:

print"Dikey şeritte arabalar: " + str(vert)

initvert = dikey

print"Yatay şeritteki arabalar: " + str(horiz)

inithoriz = ufuk

Yazdır '----------------------------'

eğer dikey < yatay ise:

GPIO.output(23, GPIO. HIGH)

GPIO.output(21, GPIO. HIGH)

GPIO.output(16, GPIO. LOW)

GPIO.output(25, GPIO. LOW)

eğer yatay < dikey:

GPIO.output(16, GPIO. HIGH)

GPIO.output(25, GPIO. HIGH)

GPIO.output(23, GPIO. LOW)

GPIO.output(21, GPIO. LOW)

cv2.imshow("Çerçeve", çerçeve)

cv2.imshow("HSV", hsv)

cv2.imshow("Eş", harman)

ham.truncate(0)

eğer cv2.waitKey(1) & 0xFF == ord('q'):

kırmak

cv2.destroyAllWindows()

GPIO.cleanup()

3. Adım: Raspberry Pi ve Kamera Bağlantısı

Raspberry Pi ve Kamera Montajı
Raspberry Pi ve Kamera Montajı
Raspberry Pi ve Kamera Montajı
Raspberry Pi ve Kamera Montajı
Raspberry Pi ve Kamera Montajı
Raspberry Pi ve Kamera Montajı
Raspberry Pi ve Kamera Yuvası
Raspberry Pi ve Kamera Yuvası

Kasayı ve kamerayı 3D yazdırın ve monte edin.

Adım 4: Trafik Işığı Montajı

Trafik Işığı Montajı
Trafik Işığı Montajı
Trafik Işığı Montajı
Trafik Işığı Montajı
Trafik Işığı Montajı
Trafik Işığı Montajı

Bir breadboard ile trafik ışıklarını test edin. Her bir karşıt LED seti bir anot paylaşır ve hepsi ortak bir katodu (toprak) paylaşır. Toplam 7 giriş kablosu olmalıdır: Her bir LED (6) çifti için 1 + 1 topraklama kablosu. Trafik ışıklarını lehimleyin ve monte edin.

Adım 5: Kablolama (Bölüm 1)

Kablolama (Bölüm 1)
Kablolama (Bölüm 1)
Kablolama (Bölüm 1)
Kablolama (Bölüm 1)
Kablolama (Bölüm 1)
Kablolama (Bölüm 1)
Kablolama (Bölüm 1)
Kablolama (Bölüm 1)

Dişi başlık pimlerini yaklaşık 5 fit kabloya lehimleyin. Bunlar, bu tellerin daha sonra PVC boruların içinden kıvrılacağı taraflardır. Farklı ışık setlerini (2 x 3 renk ve 1 zemin) ayırt edebildiğinizden emin olun. Bu durumda, hangisinin hangisi olduğunu anlamak için başka bir kırmızı, sarı ve mavi kablo setinin uçlarını şarpi ile işaretledim.

Adım 6: Çevreyi İnşa Etmek

Çevreyi İnşa Etmek
Çevreyi İnşa Etmek
Çevreyi İnşa Etmek
Çevreyi İnşa Etmek
Çevreyi İnşa Etmek
Çevreyi İnşa Etmek
Çevreyi İnşa Etmek
Çevreyi İnşa Etmek

Çevreyi inşa etmek Bunun gibi 2 fit kare ahşap palet yapın. Hurda odun, üstü kapatılacağı için iyidir. Adaptörünüze tam uyan bir delik açın. PVC boruyu yerine sabitlemek için paletin kenarlarından vidaları delin. Altındaki ahşap palete uyacak şekilde siyah köpük levhayı kesin. PVC borunun etrafına uyan bir delik açın. Karşı köşede tekrarlayın. Yolları biraz beyaz bantla işaretleyin.

Adım 7: PVC Çerçevenin Sonlandırılması

PVC Çerçevenin Sonlandırılması
PVC Çerçevenin Sonlandırılması
PVC Çerçevenin Sonlandırılması
PVC Çerçevenin Sonlandırılması
PVC Çerçevenin Sonlandırılması
PVC Çerçevenin Sonlandırılması

Üst boruda, bir demet telin sığabileceği bir delik açın. Boruların iç kısımlarına erişebildiğiniz sürece kaba bir delik iyidir. Bir test uyumu için kabloları PVC borulardan ve dirsek eklemlerinden geçirin. Her şey tamamlandığında, ana çerçevenin görünümünü temizlemek için PVC'yi biraz siyah sprey boya ile boyayın. Bir T-bağlantısı takmak için PVC borulardan birinde küçük bir boşluk kesin. Trafik ışığının sarkması için bu t-bağlantıya bir PVC boru ekleyin. Çap, ana çerçeve (1/2 ) ile aynı olabilir, ancak daha ince bir boru kullanırsanız, 7 telin kıvrılabileceğinden emin olun. Trafik ışığının asılması için bu boruya bir delik açın.

Adım 8: Kablolama (Bölüm 2)

Kablolama (Bölüm 2)
Kablolama (Bölüm 2)
Kablolama (Bölüm 2)
Kablolama (Bölüm 2)
Kablolama (Bölüm 2)
Kablolama (Bölüm 2)

Her şeyi daha önce test edildiği gibi yeniden bağlayın. Tüm bağlantıların yapıldığını doğrulamak için trafik ışığını ve devre tahtası ile kabloları iki kez kontrol edin. Trafik ışıklarını T-eklem kolundan gelen tellere lehimleyin. Kısa devre olmasını önlemek ve daha temiz bir görünüm için açıkta kalan kabloları elektrik bandıyla sarın.

Adım 9: Tamamlandı

Bitti!
Bitti!
Bitti!
Bitti!
Bitti!
Bitti!
Bitti!
Bitti!

Kodu çalıştırmak için kaynağınızı ~/.profile ve proje konumunuza cd olarak ayarladığınızdan emin olun.

Adım 10: Ekstralar (Fotoğraflar)

Önerilen: