جدول المحتويات:

محلل أنماط حركة المرور باستخدام اكتشاف الكائن الحي: 11 خطوة (بالصور)
محلل أنماط حركة المرور باستخدام اكتشاف الكائن الحي: 11 خطوة (بالصور)

فيديو: محلل أنماط حركة المرور باستخدام اكتشاف الكائن الحي: 11 خطوة (بالصور)

فيديو: محلل أنماط حركة المرور باستخدام اكتشاف الكائن الحي: 11 خطوة (بالصور)
فيديو: مهمات الفصل الثاني ، معالجات دقيقة 2024, يوليو
Anonim
Image
Image
محلل أنماط حركة المرور باستخدام اكتشاف الكائن الحي
محلل أنماط حركة المرور باستخدام اكتشاف الكائن الحي

في عالم اليوم ، تعد إشارات المرور ضرورية لطريق آمن. ومع ذلك ، في كثير من الأحيان ، يمكن أن تكون إشارات المرور مزعجة في المواقف التي يقترب فيها شخص ما من الضوء تمامًا كما يتحول إلى اللون الأحمر. هذا يضيع الوقت ، خاصةً إذا كان الضوء يمنع مركبة واحدة من المرور عبر التقاطع عندما لا يكون هناك أي شخص آخر على الطريق. ابتكاري هو إشارة مرور ذكية تستخدم الكشف المباشر عن الأشياء من الكاميرا لحساب عدد السيارات على كل طريق. الأجهزة التي سأستخدمها لهذا المشروع هي Raspberry Pi 3 ووحدة الكاميرا وأجهزة إلكترونية متنوعة للضوء نفسه. باستخدام OpenCV على Raspberry Pi ، سيتم تشغيل المعلومات التي تم جمعها من خلال التعليمات البرمجية التي تتحكم في مصابيح LED عبر GPIO. اعتمادًا على هذه الأرقام ، ستتغير إشارة المرور ، مما يسمح بمرور السيارات بأفضل ترتيب. في هذه الحالة ، سيتم السماح للممر الذي يحتوي على معظم السيارات بالمرور بحيث يكون المسار الذي يحتوي على عدد أقل من السيارات متوقفًا عن العمل ، مما يقلل من تلوث الهواء. سيؤدي ذلك إلى القضاء على المواقف التي يتم فيها إيقاف العديد من السيارات بينما لا توجد سيارات على الطريق المتقاطع. لا يوفر هذا الوقت للجميع فحسب ، بل إنه يحفظ البيئة أيضًا. مقدار الوقت الذي يتم فيه إيقاف الأشخاص عند علامة توقف مع توقف محركهم عن العمل يزيد من كمية تلوث الهواء ، لذلك من خلال إنشاء إشارة مرور ذكية ، يمكنني تحسين أنماط الإضاءة بحيث تقضي السيارات أقل وقت ممكن مع توقف سيارتها. في النهاية ، يمكن تنفيذ نظام إشارات المرور هذا في المدن أو الضواحي أو حتى المناطق الريفية ليكون أكثر كفاءة للناس من شأنه تقليل تلوث الهواء.

الخطوة 1: قائمة الأجزاء

المواد:

Raspberry Pi 3 موديل B v1.2

كاميرا Raspberry Pi v2.1

5V / 1A مايكرو USB امدادات الطاقة

شاشة HDMI ولوحة مفاتيح وماوس وبطاقة SD مع Raspbian Jessie

كابل اختراق Raspberry Pi GPIO

المصابيح الحمراء ، الصفراء ، الخضراء (2 من كل لون)

موصلات أنثى لـ Raspberry Pi (7 ألوان فريدة)

سلك قياس 24 متنوع (ألوان مختلفة) + أنبوب انكماش حراري

لوحة أو منصة خشبية 2’x2’

مسامير خشبية

سطح أسود (كرتون ، لوح فوم ، لوح ملصقات ، إلخ.)

شريط أبيض (أو أي لون غير الأسود) لعلامات الطريق

طلاء بخاخ أسود (للبلاستيك)

½”أنبوب PVC مع وصلات كوع 90 درجة (2) ، مقبس T (1) ، محول أنثى (2)

أدوات

لحام حديد

طابعة 3D

حفر مع لقم الثقب المختلفة

اللوح

مسدس حرارة

الخطوة 2: إعداد Raspberry Pi

قم بتحميل بطاقة SD في Raspberry Pi وقم بالتمهيد.

اتبع هذا الدليل لتثبيت مكتبات OpenCV المطلوبة. تأكد من أن لديك الوقت للقيام بهذه الخطوة ، لأن تثبيت مكتبة OpenCV قد يستغرق بضع ساعات. تأكد أيضًا من تثبيت الكاميرا وإعدادها هنا.

يجب عليك أيضًا تثبيت التثبيت:

بيكاميرا

gpiozero

RPi. GPIO

ها هو الكود النهائي:

من picamera.array استيراد PiRGBArray

من picamera استيراد PiCamera

استيراد picamera.array

استيراد numpy كـ np

وقت الاستيراد

استيراد السيرة الذاتية 2

استيراد RPi. GPIO كـ GPIO

وقت الاستيراد

GPIO.setmode (GPIO. BCM)

بالنسبة إلى i in (23 ، 25 ، 16 ، 21):

GPIO.setup (i ، GPIO. OUT)

cam = PiCamera ()

حدبة الدقة = (480 ، 480)

cam.framerate = 30

خام = PiRGBArray (حدبة ، الحجم = (480 ، 480))

time.sleep (0.1) الوقت.

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

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

initvert = 0

الأفق = 0

العداد = 0

للإطار في cam.capture_continuous (خام ، تنسيق = "bgr" ، use_video_port = True):

الإطار = الإطار

hsv = cv2.cvtColor (frame، cv2. COLOR_BGR2HSV)

قناع = cv2.inRange (hsv ، colorLower ، colorUpper)

قناع = cv2.blur (قناع ، (3 ، 3))

mask = cv2.dilate (قناع ، بلا ، تكرارات = 5)

mask = cv2.erode (قناع ، بلا ، تكرارات = 1)

mask = cv2.dilate (قناع ، بلا ، تكرارات = 3)

أنا ، عتبة = cv2.threshold (قناع ، 127 ، 255 ، cv2. THRESH_BINARY)

cnts = cv2.findContours (عتبة ، cv2. RETR_TREE ، cv2. CHAIN_APPROX_SIMPLE) [- 2]

المركز = لا شيء

فير = 0

الأفق = 0

إذا كان len (cnts)> 0:

لـ c في cnts:

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

المركز = (int (x) ، int (y))

نصف القطر = int (radius)

cv2.circle (إطار ، مركز ، نصف قطر ، (0 ، 255 ، 0) ، 2)

س = كثافة العمليات (س)

y = int (y)

إذا كان 180 <x <300:

إذا كانت y> 300:

فير = فير +1

أليف ص <180:

فير = فير +1

آخر:

فير = فير

إذا كان 180 <ص <300:

إذا كانت x> 300:

الأفق = الأفق +1

إليف × <180:

الأفق = الأفق +1

آخر:

الأفق = الأفق

إذا كان vert! = initvert:

طباعة "سيارات في الممر الرأسي:" + str (vert)

initvert = vert

طباعة "سيارات في الممر الأفقي:" + str (أفقي)

الأفق = الأفق

مطبعة '----------------------------'

إذا كان الأفق!

طباعة "سيارات في الممر الرأسي:" + str (vert)

initvert = vert

طباعة "سيارات في الممر الأفقي:" + str (أفقي)

الأفق = الأفق

مطبعة '----------------------------'

إذا كان Vert <horiz:

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 (23، GPIO. LOW)

GPIO.output (21، GPIO. LOW)

cv2.imshow ("الإطار" ، الإطار)

cv2.imshow ("HSV"، hsv)

cv2.imshow ("Thresh" ، عتبة)

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 وجبل الكاميرا

قم بطباعة العلبة ثلاثية الأبعاد وتثبيت الكاميرا وتجميعها.

الخطوة 4: تجميع إشارات المرور

الجمعية الضوئية
الجمعية الضوئية
الجمعية الضوئية
الجمعية الضوئية
الجمعية الضوئية
الجمعية الضوئية

اختبر إشارة المرور بلوحة توصيل. تشترك كل مجموعة متعارضة من مصابيح LED في أنود ، وكلها تشترك في كاثود مشترك (أرضي). يجب أن يكون هناك ما مجموعه 7 أسلاك إدخال: 1 لكل زوج من مصابيح LED (6) + 1 سلك أرضي. لحام وتجميع إشارات المرور.

الخطوة 5: الأسلاك (الجزء 1)

الأسلاك (الجزء الأول)
الأسلاك (الجزء الأول)
الأسلاك (الجزء الأول)
الأسلاك (الجزء الأول)
الأسلاك (الجزء الأول)
الأسلاك (الجزء الأول)
الأسلاك (الجزء الأول)
الأسلاك (الجزء الأول)

قم بلحام دبابيس الرأس الأنثوية بحوالي 5 أقدام من السلك. هذه هي الجوانب التي ستلتقطها هذه الأسلاك عبر أنابيب PVC لاحقًا. تأكد من قدرتك على التمييز بين مجموعات الأضواء المختلفة (2 × 3 ألوان وأرضية واحدة). في هذه الحالة ، قمت بتمييز نهايات مجموعة أخرى من الأسلاك الحمراء والصفراء والزرقاء باستخدام شارب حتى أعرف أيهما.

الخطوة السادسة: بناء البيئة

بناء البيئة
بناء البيئة
بناء البيئة
بناء البيئة
بناء البيئة
بناء البيئة
بناء البيئة
بناء البيئة

بناء البيئة اصنع لوح خشبي بحجم 2 قدم مربع مثل هذا. الخشب الخردة جيد لأنه سيتم تغطيته. اصنع ثقبًا يناسب المحول. حفر براغي من خلال جوانب البليت لتثبيت الأنابيب البلاستيكية في مكانها. قطع لوح الرغوة السوداء لتتناسب مع لوح الخشب تحتها. اصنع ثقبًا يناسب الأنابيب البلاستيكية. كرر في الزاوية المقابلة. ضع علامة على الطرق ببعض الشريط الأبيض.

الخطوة 7: الانتهاء من إطار PVC

الانتهاء من إطار PVC
الانتهاء من إطار PVC
الانتهاء من إطار PVC
الانتهاء من إطار PVC
الانتهاء من إطار PVC
الانتهاء من إطار PVC

في الأنبوب العلوي ، قم بحفر حفرة يمكن أن تلائم مجموعة من الأسلاك. لا بأس من وجود ثقب خشن طالما يمكنك الوصول إلى الأجزاء الداخلية من الأنابيب. ثعبان الأسلاك من خلال الأنابيب البلاستيكية ومفاصل الكوع لاختبار ملاءمة. بمجرد الانتهاء من كل شيء ، قم بطلاء PVC ببعض طلاء الرش الأسود لتنظيف مظهر الإطار الرئيسي. اقطع فجوة صغيرة في أحد الأنابيب البلاستيكية لتناسب مفصل T. أضف أنبوب PVC إلى هذا المفصل على شكل حرف T لتتدلى منه إشارة المرور. يمكن أن يكون القطر هو نفسه الإطار الرئيسي (1/2 بوصة) ، على الرغم من أنك إذا كنت تستخدم أنبوبًا أرق ، فتأكد من أن الأسلاك السبعة يمكن أن تتسلل من خلاله.

الخطوة 8: الأسلاك (الجزء 2)

الأسلاك (الجزء الثاني)
الأسلاك (الجزء الثاني)
الأسلاك (الجزء الثاني)
الأسلاك (الجزء الثاني)
الأسلاك (الجزء الثاني)
الأسلاك (الجزء الثاني)

أعد توصيل كل شيء كما تم اختباره مسبقًا. تحقق مرة أخرى من إشارة المرور والأسلاك باستخدام لوحة توصيل للتأكد من إجراء جميع التوصيلات. قم بتوصيل إشارة المرور بالأسلاك القادمة من خلال ذراع المفصل T. لف الأسلاك المكشوفة بشريط كهربائي لمنع أي شورت ولمظهر أنظف.

الخطوة 9: انتهى

تم الانتهاء من!
تم الانتهاء من!
تم الانتهاء من!
تم الانتهاء من!
تم الانتهاء من!
تم الانتهاء من!
تم الانتهاء من!
تم الانتهاء من!

لتشغيل الكود ، تأكد من تعيين المصدر الخاص بك كـ ~ /.profile و cd إلى موقع مشروعك.

الخطوة 10: إضافات (صور)

موصى به: