สารบัญ:

ตัววิเคราะห์รูปแบบการรับส่งข้อมูลโดยใช้การตรวจจับวัตถุแบบสด: 11 ขั้นตอน (พร้อมรูปภาพ)
ตัววิเคราะห์รูปแบบการรับส่งข้อมูลโดยใช้การตรวจจับวัตถุแบบสด: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ตัววิเคราะห์รูปแบบการรับส่งข้อมูลโดยใช้การตรวจจับวัตถุแบบสด: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ตัววิเคราะห์รูปแบบการรับส่งข้อมูลโดยใช้การตรวจจับวัตถุแบบสด: 11 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: CiRA CORE พื้นฐาน ตอนที่ 4 การตรวจจับวัตถุในภาพ 2024, ธันวาคม
Anonim
Image
Image
ตัววิเคราะห์รูปแบบการรับส่งข้อมูลโดยใช้การตรวจจับวัตถุแบบสด
ตัววิเคราะห์รูปแบบการรับส่งข้อมูลโดยใช้การตรวจจับวัตถุแบบสด

ในโลกปัจจุบัน สัญญาณไฟจราจรเป็นสิ่งจำเป็นสำหรับถนนที่ปลอดภัย อย่างไรก็ตาม หลายครั้งที่สัญญาณไฟจราจรอาจสร้างความรำคาญในสถานการณ์ที่มีคนเข้าใกล้ไฟในขณะที่กำลังเปลี่ยนเป็นสีแดง เป็นการเสียเวลา โดยเฉพาะอย่างยิ่งหากไฟส่องขวางไม่ให้รถคันเดียวผ่านสี่แยกเมื่อไม่มีคนอื่นอยู่บนถนน นวัตกรรมของฉันคือสัญญาณไฟจราจรอัจฉริยะที่ใช้การตรวจจับวัตถุมีชีวิตจากกล้องเพื่อนับจำนวนรถยนต์ในแต่ละถนน ฮาร์ดแวร์ที่ฉันจะใช้สำหรับโครงการนี้คือ Raspberry Pi 3 โมดูลกล้อง และฮาร์ดแวร์อิเล็กทรอนิกส์ต่างๆ สำหรับตัวไฟเอง การใช้ OpenCV บน Raspberry Pi ข้อมูลที่รวบรวมจะถูกเรียกใช้ผ่านรหัสที่ควบคุม LED ผ่าน GPIO ขึ้นอยู่กับตัวเลขเหล่านี้ สัญญาณไฟจราจรจะเปลี่ยนไป ปล่อยให้รถผ่านไปในลำดับที่เหมาะสมที่สุด ในกรณีนี้ ช่องจราจรที่มีรถยนต์มากที่สุดจะถูกปล่อยผ่านเพื่อให้ช่องที่มีรถน้อยวิ่งเดินเบา ช่วยลดมลพิษทางอากาศ วิธีนี้จะช่วยขจัดสถานการณ์เมื่อรถหลายคันหยุดนิ่งในขณะที่ไม่มีรถอยู่บนถนนที่ตัดกัน สิ่งนี้ไม่เพียงช่วยประหยัดเวลาสำหรับทุกคน แต่ยังช่วยรักษาสิ่งแวดล้อมอีกด้วย ระยะเวลาที่ผู้คนหยุดรถที่ป้ายหยุดโดยที่เครื่องยนต์เดินเบาจะเพิ่มปริมาณมลพิษทางอากาศ ดังนั้น ด้วยการสร้างสัญญาณไฟจราจรอัจฉริยะ ฉันจึงสามารถปรับรูปแบบแสงให้เหมาะสมเพื่อให้รถยนต์ใช้เวลาน้อยที่สุดเท่าที่จะเป็นไปได้ในการหยุดรถ. ในที่สุด ระบบสัญญาณไฟจราจรนี้สามารถนำไปใช้ในเมือง ชานเมือง หรือแม้แต่ในชนบทเพื่อให้มีประสิทธิภาพมากขึ้นสำหรับผู้คน จะช่วยลดมลพิษทางอากาศ

ขั้นตอนที่ 1: รายการชิ้นส่วน

วัสดุ:

Raspberry Pi 3 รุ่น B v1.2

กล้อง Raspberry Pi v2.1

แหล่งจ่ายไฟไมโคร USB 5V/1A

จอภาพ HDMI, คีย์บอร์ด, การ์ด SD เมาส์ พร้อม Raspbian Jessie

สายเคเบิลฝ่าวงล้อม Raspberry Pi GPIO

ไฟ LED สีแดง สีเหลือง สีเขียว (สีละ 2 ดวง)

ขั้วต่อตัวเมียสำหรับ Raspberry Pi (7 สีเฉพาะ)

สายคละ 24 เส้น (คละสี) + ท่อหดความร้อน

2'x2 'แผงไม้หรือแท่น

สกรูไม้

พื้นผิวสีดำ (กระดาษแข็ง กระดานโฟม แผ่นโปสเตอร์ ฯลฯ)

เทปสีขาว (หรือสีอื่นใดที่ไม่ใช่สีดำ) สำหรับทำเครื่องหมายถนน

สีสเปรย์สีดำ (สำหรับ PVC)

ท่อพีวีซี ½” ข้อต่อศอก 90 องศา(2), เต้ารับตัว T (1), อแดปเตอร์ตัวเมีย (2)

เครื่องมือ

หัวแร้ง

เครื่องพิมพ์ 3 มิติ

เจาะด้วยดอกสว่านต่างๆ

เขียงหั่นขนม

ปืนความร้อน

ขั้นตอนที่ 2: การตั้งค่า Raspberry Pi

โหลดการ์ด SD ลงใน Raspberry Pi แล้วบูตเครื่อง

ทำตามคำแนะนำนี้เพื่อติดตั้งไลบรารี OpenCV ที่จำเป็น ตรวจสอบให้แน่ใจว่าคุณมีเวลาทำขั้นตอนนี้ เนื่องจากการติดตั้งไลบรารี OpenCV อาจใช้เวลาสองสามชั่วโมง อย่าลืมติดตั้งและตั้งค่ากล้องของคุณที่นี่ด้วย

คุณควรติดตั้ง pip ด้วย:

picamera

gpiozero

RPi. GPIO

นี่คือรหัสที่สรุปแล้ว:

จาก picamera.array นำเข้า PiRGBArray

จาก picamera นำเข้า PiCamera

นำเข้า picamera.array

นำเข้า numpy เป็น np

เวลานำเข้า

นำเข้า cv2

นำเข้า RPi. GPIO เป็น GPIO

เวลานำเข้า

GPIO.setmode(GPIO. BCM)

สำหรับฉันใน (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

กล้อง = PiCamera()

กล้องความละเอียด = (480, 480)

cam.framerate=30

raw=PiRGBArray(กล้อง, ขนาด=(480, 480))

เวลานอน(0.1)

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

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

initvert = 0

initoriz = 0

ตัวนับ = 0

สำหรับเฟรมใน cam.capture_continuous(raw, format="bgr", use_video_port=True):

frame = frame.array

hsv = cv2.cvtColor (เฟรม cv2. COLOR_BGR2HSV)

หน้ากาก = cv2.inRange (hsv, colorLower, colorUpper)

หน้ากาก = cv2.blur(หน้ากาก, (3, 3))

mask= cv2.dilate(mask, none, iterations=5)

mask= cv2.erode(mask, none, iterations=1)

mask= cv2.dilate(mask, none, iterations=3)

ฉัน thresh = cv2.threshold(mask, 127, 255, cv2. THRESH_BINARY)

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

ศูนย์ = ไม่มี

vert = 0

ฮอริซ = 0

ถ้า len(cts) > 0:

สำหรับ c ใน cnts:

(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

เอลฟ์ y < 180:

vert = vert +1

อื่น:

vert = vert

ถ้า 180 < y < 300:

ถ้า x > 300:

ฮอริซ = ฮอริซ +1

เอลฟ์ x < 180:

ฮอริซ = ฮอริซ +1

อื่น:

ฮอริซ = ฮอริซ

ถ้า vert != initvert:

พิมพ์ "รถในเลนแนวตั้ง: " + str(vert)

initvert = vert

พิมพ์ "รถยนต์ในเลนแนวนอน: " + str(horiz)

initoriz = ฮอริซ

พิมพ์ '-----------------------------'

ถ้า horiz != initoriz:

พิมพ์ "รถในเลนแนวตั้ง: " + str(vert)

initvert = vert

พิมพ์ "รถยนต์ในเลนแนวนอน: " + str(horiz)

initoriz = ฮอริซ

พิมพ์ '-----------------------------'

ถ้า vert < horiz:

GPIO.output(23, GPIO.สูง)

GPIO.output(21, GPIO.สูง)

GPIO.output(16, GPIO.ต่ำ)

GPIO.output(25, GPIO.ต่ำ)

ถ้า horiz < vert:

GPIO.output(16, GPIO.สูง)

GPIO.output(25, GPIO.สูง)

GPIO.output(23, GPIO.ต่ำ)

GPIO.output(21, GPIO.ต่ำ)

cv2.imshow("เฟรม", เฟรม)

cv2.imshow("HSV", hsv)

cv2.imshow("Thresh", นวด)

raw.truncate(0)

ถ้า cv2.waitKey(1) & 0xFF == ord('q'):

หยุดพัก

cv2.destroyAllWindows()

GPIO. การล้างข้อมูล ()

ขั้นตอนที่ 3: Raspberry Pi และเมาท์กล้อง

Raspberry Pi และเมาท์กล้อง
Raspberry Pi และเมาท์กล้อง
Raspberry Pi และเมาท์กล้อง
Raspberry Pi และเมาท์กล้อง
Raspberry Pi และเมาท์กล้อง
Raspberry Pi และเมาท์กล้อง
Raspberry Pi และเมาท์กล้อง
Raspberry Pi และเมาท์กล้อง

3D พิมพ์เคสและติดกล้องและประกอบ

ขั้นตอนที่ 4: การประกอบสัญญาณไฟจราจร

ประกอบสัญญาณไฟจราจร
ประกอบสัญญาณไฟจราจร
ประกอบสัญญาณไฟจราจร
ประกอบสัญญาณไฟจราจร
ประกอบสัญญาณไฟจราจร
ประกอบสัญญาณไฟจราจร

ทดสอบสัญญาณไฟจราจรด้วยเขียงหั่นขนม ไฟ LED ที่ตรงข้ามกันแต่ละชุดใช้ขั้วบวก และทั้งหมดมีขั้วลบ (กราวด์) ร่วมกัน ควรมีสายไฟอินพุตทั้งหมด 7 เส้น: 1 เส้นสำหรับ LEDS แต่ละคู่ (6) + สายกราวด์ 1 เส้น ประสานและประกอบสัญญาณไฟจราจร

ขั้นตอนที่ 5: การเดินสายไฟ (ตอนที่ 1)

การเดินสายไฟ (ตอนที่ 1)
การเดินสายไฟ (ตอนที่ 1)
การเดินสายไฟ (ตอนที่ 1)
การเดินสายไฟ (ตอนที่ 1)
การเดินสายไฟ (ตอนที่ 1)
การเดินสายไฟ (ตอนที่ 1)
การเดินสายไฟ (ตอนที่ 1)
การเดินสายไฟ (ตอนที่ 1)

บัดกรีหมุดส่วนหัวตัวเมียกับลวดประมาณ 5 ฟุต เหล่านี้เป็นด้านที่สายเหล่านี้จะเล็ดลอดผ่านท่อพีวีซีในภายหลัง อย่าลืมแยกแยะชุดไฟต่างๆ (2 x 3 สีและ 1 กราวด์) ในกรณีนี้ ฉันทำเครื่องหมายปลายสายสีแดง สีเหลือง และสีน้ำเงินอีกชุดหนึ่งด้วยปลายแหลม เพื่อให้รู้ว่าอันไหนคืออันไหน

ขั้นตอนที่ 6: การสร้างสิ่งแวดล้อม

การสร้างสิ่งแวดล้อม
การสร้างสิ่งแวดล้อม
การสร้างสิ่งแวดล้อม
การสร้างสิ่งแวดล้อม
การสร้างสิ่งแวดล้อม
การสร้างสิ่งแวดล้อม
การสร้างสิ่งแวดล้อม
การสร้างสิ่งแวดล้อม

สร้างสิ่งแวดล้อม ทำพาเลทไม้ขนาด 2 ฟุต แบบนี้ เศษไม้ใช้ได้ดีเพราะจะคลุมไว้ เจาะรูที่พอดีกับอะแดปเตอร์ของคุณ เจาะสกรูที่ด้านข้างของพาเลทเพื่อยึดท่อพีวีซีเข้าที่ ตัดแผ่นโฟมสีดำให้เข้ากับพาเลทไม้ด้านล่าง เจาะรูที่พอดีกับท่อพีวีซี ทำซ้ำที่มุมตรงข้าม ทำเครื่องหมายถนนด้วยเทปสีขาว

ขั้นตอนที่ 7: จบโครง PVC

จบงานโครงพีวีซี
จบงานโครงพีวีซี
จบงานโครงพีวีซี
จบงานโครงพีวีซี
จบงานโครงพีวีซี
จบงานโครงพีวีซี

ที่ท่อด้านบน ให้เจาะรูที่มัดสายไฟได้ รูขรุขระนั้นใช้ได้ตราบใดที่คุณสามารถเข้าถึงด้านในของท่อได้ สอดสายไฟผ่านท่อพีวีซีและข้อต่อข้อศอกเพื่อทดสอบความพอดี เมื่อทุกอย่างเสร็จเรียบร้อยแล้ว ให้ทาสีพีวีซีด้วยสีสเปรย์สีดำเพื่อทำความสะอาดรูปลักษณ์ของโครงหลัก ตัดช่องว่างเล็ก ๆ ในท่อพีวีซีอันใดอันหนึ่งเพื่อให้พอดีกับข้อต่อตัว T เพิ่มท่อพีวีซีที่ข้อต่อ t นี้เพื่อให้สัญญาณไฟจราจรห้อยลง เส้นผ่านศูนย์กลางอาจเท่ากับโครงหลัก (1/2 ) แม้ว่าคุณจะใช้ท่อที่บางกว่า ตรวจสอบให้แน่ใจว่าสายไฟ 7 เส้นสามารถเล็ดลอดผ่านได้ เจาะรูผ่านท่อนี้เพื่อให้สัญญาณไฟจราจรห้อยลงมา

ขั้นตอนที่ 8: การเดินสายไฟ (ตอนที่ 2)

การเดินสายไฟ (ตอนที่ 2)
การเดินสายไฟ (ตอนที่ 2)
การเดินสายไฟ (ตอนที่ 2)
การเดินสายไฟ (ตอนที่ 2)
การเดินสายไฟ (ตอนที่ 2)
การเดินสายไฟ (ตอนที่ 2)

ต่อสายใหม่ทั้งหมดตามที่ทดสอบก่อนหน้านี้ ตรวจสอบสัญญาณไฟจราจรและสายไฟอีกครั้งด้วยเขียงหั่นขนมเพื่อยืนยันการเชื่อมต่อทั้งหมด ประสานสัญญาณไฟจราจรกับสายไฟที่ผ่านแขน T-joint พันสายไฟที่เปลือยเปล่าด้วยเทปพันสายไฟเพื่อป้องกันกางเกงขาสั้นและเพื่อให้ดูสะอาดตา

ขั้นตอนที่ 9: เสร็จสิ้น

ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!
ที่เสร็จเรียบร้อย!

ในการรันโค้ด อย่าลืมตั้งค่าซอร์สของคุณเป็น ~/.profile และ cd ไปยังตำแหน่งโครงการของคุณ

ขั้นตอนที่ 10: ความพิเศษ (ภาพถ่าย)

แนะนำ: