- การเตรียม DVR สำหรับการสตรีม RTSP
- เตรียม Raspberry Pi ของคุณ
- การติดตั้ง OpenCV และไลบรารีอื่น ๆ บน Raspberry Pi
- การเขียนโปรแกรม Raspberry Pi สำหรับการสตรีมวิดีโอ RTSP จากกล้องวงจรปิด
- การทดสอบ Raspberry Pi CCTV Viewer
สถานที่ทำงานและอาคารพาณิชย์ส่วนใหญ่ในปัจจุบันมีการติดตั้งระบบกล้องวงจรปิดเพื่อตรวจสอบกิจกรรม แต่บ่อยครั้งเป็นเรื่องยากสำหรับหน่วยงานที่เกี่ยวข้องหรือเจ้าหน้าที่รักษาความปลอดภัยในการตรวจสอบฟีดสดของกล้องทั้งหมดอย่างต่อเนื่องเพื่อค้นหากิจกรรมที่น่าสงสัย ด้วยวิสัยทัศน์ของคอมพิวเตอร์และการเรียนรู้ของเครื่องที่ก้าวหน้าไปอย่างรวดเร็วถึงเวลาแล้วที่เราจะทำให้ระบบกล้องวงจรปิดของเราฉลาดขึ้น ในบทความนี้เราจะหารือถึงวิธีการที่จะได้รับฟีดวิดีโอจากการบันทึกภาพที่มีอยู่ (เช่น Hikvision DVR) ผ่านRTSP สตรีมมิ่งกับราสเบอร์รี่ปี่ใช้งูหลามและ OpenCV เมื่อเราได้รับสิ่งนี้เราจะสามารถใช้ประโยชน์จากพลังของ OpenCV ในฟีดวิดีโอเหล่านี้เพื่อตรวจจับวัตถุเฉพาะอ่านป้ายทะเบียนรถจดจำใบหน้าและอะไรก็ไม่ได้!
เพื่อประโยชน์ของบทช่วยสอนนี้ฉันจะใช้Hikvision 4 channel CCTV DVRที่ติดตั้งไว้แล้วในอาคาร เราจะสตรีมหน้าจอกล้องทั้ง 4 ไปยัง Raspberry และแสดงบนหน้าจอสัมผัสขนาด 5 นิ้วซึ่งผู้ใช้สามารถเปลี่ยนไปมาระหว่างแต่ละช่องได้ตามต้องการ ฉันรู้เรื่องนี้ไม่มากนักเมื่อพิจารณาถึงพลังของ OpenCV และฉันมีแผนที่จะขยายขนาดด้วยการตรวจจับการเคลื่อนไหวการแจ้งเตือนวิดีโอบั๊กเลอร์การติดตามบุคคล ฯลฯ แต่ขอทิ้งทั้งหมดไว้สำหรับบทช่วยสอนอื่น
การเตรียม DVR สำหรับการสตรีม RTSP
ก่อนที่เราจะดำดิ่งลงไปในฮาร์ดแวร์ราสเบอร์รี่ pi และรหัส python สิ่งสำคัญคือต้องตรวจสอบว่า DVR รองรับ RTSP หรือไม่และจะเข้าถึงได้อย่างไร ฉันใช้เวลาส่วนใหญ่ติดอยู่ที่นี่เพราะขั้นตอนดูเหมือนจะแตกต่างกันไปสำหรับ DVR แต่ละประเภทและคุณต้องทำและได้รับความนิยมมากมายและพยายาม แต่เมื่อคุณคิดออกแล้วมันก็เหมือนมีเสน่ห์ทุกครั้ง
อันดับแรกตรวจสอบให้แน่ใจว่าคุณทราบชื่อผู้ใช้และรหัสผ่านของระบบ DVR ของคุณและเชื่อมต่อกับอินเทอร์เน็ตแล้ว นอกจากนี้ในบทช่วยสอนนี้ฉันจะสตรีม RTSP จากเครือข่ายท้องถิ่นเท่านั้นหากคุณมี IP แบบคงที่คุณสามารถส่งต่อพอร์ตและทำตามเครือข่ายอื่นได้ แต่สำหรับบทช่วยสอนนี้เราจะดำเนินการทุกอย่างภายในเครือข่ายท้องถิ่น
ขั้นตอนที่ 1:ค้นหาที่อยู่ IP ของ DVR ของคุณ เมื่อเครื่อง DVR เชื่อมต่อกับอินเทอร์เน็ตแล้วจะมีการกำหนดที่อยู่ IP ของตัวเอง คุณสามารถค้นหาที่อยู่ IP นี้ได้จากหน้าการกำหนดค่าเราเตอร์ของคุณหรือจากหน้าจอ DVR ของคุณเอง (สมมติว่าคุณมีจอภาพที่เชื่อมต่อกับ DVR) ที่อยู่ IP ของเราเตอร์ของฉันคือ http://192.168.11.110/ (เปลี่ยนแปลงด้วยเหตุผลด้านความปลอดภัย)
ขั้นตอนที่ 2:เปิดเว็บเบราว์เซอร์ที่คุณเลือกแล้วป้อนที่อยู่ IP และกด Enter คุณจะเข้าสู่หน้าล็อกอิน DVR ที่คุณต้องป้อนชื่อผู้ใช้ (ของฉันถูกเปลี่ยน) และรหัสผ่านสำหรับเครื่องบันทึกภาพของคุณ ชื่อผู้ใช้เริ่มต้นจะเป็นผู้ดูแลระบบ แต่คุณต้องรู้รหัสผ่าน หน้าจอเข้าสู่ระบบ DVR ของฉันแสดงอยู่ด้านล่างลักษณะของคุณอาจแตกต่างกัน
ขั้นตอนที่ 3:หลังจากเข้าสู่ระบบสำเร็จให้มองหาหมายเลขพอร์ต RTSP บน DVR ของคุณโดยส่วนใหญ่ค่าเริ่มต้นจะเป็น 554 แต่อาจมีการเปลี่ยนแปลง ในขณะที่คุณอยู่ที่นี่ให้เล่นกับการตั้งค่าการกำหนดค่าเพื่อตรวจสอบว่ามีตัวเลือกในการเปิดใช้งาน RTSP หรือไม่หากไม่มีคุณสามารถข้ามได้ คุณต้องใช้เวลาสักพักที่นี่เนื่องจากขั้นตอนจะแตกต่างกันไปตาม DVR
ขั้นตอนที่ 4:เตรียมลิงค์ RTSP ของคุณลิงค์ RTSP พื้นฐานจะอยู่ในรูปแบบต่อไปนี้ -
rtsp: //
อีกครั้งขึ้นอยู่กับประเภทของ DVR คุณสามารถใช้ google เพื่อค้นหาสิ่งที่เหมาะกับคุณ รูปแบบที่ใช้งานได้มีรูปแบบด้านล่างคุณสามารถลองใช้สิ่งนี้ -
rtsp: //
ที่ไหน
rtsp: // ผู้ดูแลระบบ: [email protected]: 554 / สตรีมมิ่ง / ช่อง / 202 /
ขั้นตอนที่ 5:เล่นสตรีมบน VLC เพื่อให้แน่ใจว่าการเชื่อมต่อ RTSP ของคุณใช้งานได้ ติดตั้ง VLC บนคอมพิวเตอร์ที่เชื่อมต่อกับเครือข่ายเดียวกับ DVR เปิดใช้งานและกด Ctrl + N สำหรับการสตรีมเครือข่าย ป้อน URL ตามที่แสดงด้านล่างแล้วกดตกลง
หากลิงก์ RTSP ทำงานในลักษณะที่ควรจะเป็นคุณจะเห็นสตรีมสดของกล้องวงจรปิดของคุณบนเครื่องเล่น VLC ดังที่แสดงด้านล่าง หากมีข้อผิดพลาดคุณจะต้องหาลิงค์ที่ถูกต้อง
เมื่อเสร็จแล้วเราไม่จำเป็นต้องพูดถึง DVR ของเราอีกต่อไปให้ใช้ Raspberry pi ของเรา
เตรียม Raspberry Pi ของคุณ
ต่อไปเราต้องตั้งค่า raspberry pi ด้วยจอแสดงผลขนาด 5 นิ้ว ฉันจะไม่ลงรายละเอียดเกี่ยวกับเรื่องนี้เนื่องจากเราได้กล่าวถึงหลายครั้งแล้ว คุณสามารถอ่านบทความต่อไปนี้เพื่อเป็นแนวทาง -
- เริ่มต้นกับ Raspberry Pi
- การเชื่อมต่อจอแสดงผล 5 นิ้วกับ Raspberry Pi
เรากำลังใช้ Raspberry Pi 3 B + กับ Debian Buster OS ที่ทำงานอยู่ อาจเป็นความคิดที่ดีที่จะใช้ Pi 4 หากทำได้และเพิ่มตัวเลือกการระบายความร้อนบางอย่างเช่นฮีทซิงค์หรือพัดลมเพราะฉันสังเกตเห็นว่าอุณหภูมิสูงถึงเกือบ 70 * C ฉันไม่ได้ทำตามขั้นตอนการระบายความร้อนใด ๆ ณ ตอนนี้และการตั้งค่าของฉันมีลักษณะเช่นนี้ -
การติดตั้ง OpenCV และไลบรารีอื่น ๆ บน Raspberry Pi
ขั้นตอนต่อไปคือการติดตั้ง OpenCV บน Raspberry Pi ก่อนหน้านี้เราได้พูดถึงวิธีการรวบรวม OpenCV บน Raspberry pi
- การติดตั้ง OpenCV บน Raspberry Pi
- เริ่มต้นกับ OpenCV
คุณสามารถทำตามลิงค์ด้านบนและรวบรวม OpenCV โดยใช้ Cmake หรือเพียงแค่ติดตั้งด้วยวิธี apt-get ฉันอยากจะแนะนำในภายหลังหากคุณไม่ได้เขียนโปรแกรม OpenCV อย่างจริงจัง ฉันใช้คำสั่งต่อไปนี้เพื่อติดตั้ง OpenCV
sudo apt update sudo apt ติดตั้ง python3-opencv
ในโปรแกรมของเราเราจะใช้ไลบรารี“ cvui” เพื่อสร้าง UI พื้นฐานที่มีปุ่มสองปุ่มที่ช่วยให้เราเลื่อนไปมาระหว่างสี่หน้าจอได้ ในการติดตั้ง cvui ให้ทำตามคำสั่งด้านล่าง
Python3 pip ติดตั้ง cvui
เมื่อติดตั้งทั้งสองแพ็คเกจแล้วเราสามารถเข้าสู่โปรแกรมหลักได้ ตรวจสอบให้แน่ใจว่าแพ็คเกจที่ติดตั้งทั้งสองใช้งานได้โดยพยายามนำเข้าจากเทอร์มินัลคำสั่งของ Pi
การเขียนโปรแกรม Raspberry Pi สำหรับการสตรีมวิดีโอ RTSP จากกล้องวงจรปิด
โปรแกรมที่สมบูรณ์สำหรับโครงการนี้สามารถพบได้ที่ส่วนท้ายของหน้านี้ คำอธิบายเดียวกันมีดังนี้ เราเริ่มต้นโปรแกรมโดยรวมไฟล์ส่วนหัวที่จำเป็น
นำเข้า cv2 นำเข้า cvui
ส่วนถัดไปของโปรแกรมต้องมีการแก้ไข คุณต้องป้อนชื่อผู้ใช้และรหัสผ่านของเครื่องบันทึกภาพของคุณ สำหรับจอแสดงผลขนาด 5 นิ้วความกว้างและความสูงคือ 800 และ 480 ตามลำดับดังนั้นเราจึงได้ป้อนข้อมูลเดียวกัน
rtsp_username = "admin" rtsp_password = "aswinth347653" width = 800 height = 480 cam_no = 1
เรามีฟังก์ชั่นที่เรียกว่าสร้างกล้องที่จะใช้ทุกครั้งที่เราเปลี่ยนหมายเลขกล้องที่ต้องดู
def create_camera (ช่อง): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / Streaming / channels /" + channel + "02" cap = cv2.VideoCapture () cap.open (rtsp) cap.set (3, 640) # หมายเลข ID สำหรับความกว้างคือ 3 cap.set (4, 480) # หมายเลข ID สำหรับความสูงคือ 480 cap.set (10, 100) # หมายเลข ID สำหรับความสว่างคือ 10qq ผลตอบแทนสูงสุด
ภายในลูปหลักในขณะที่เรามีโปรแกรมของเราในการอ่านเฟรมจากอุปกรณ์จับภาพและแปลงเป็นแบบเต็มหน้าจอ หน้าต่างแสดงผลในโปรแกรมของเราจะถูกเรียกเป็นหน้าจอ
ความสำเร็จ current_cam = cam.read () dim = (ความกว้างความสูง) Full_frame = cv2.resize (current_cam, dim, interpolation = cv2.INTER_AREA) cv2.namedWindow ('screen', cv2.WINDOW_NORMAL) cv2.setWindowProperty ('screen ', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
ตามด้วยการที่เรามีรหัสสำหรับสองปุ่มที่จะวางบนหน้าจอ คำสั่ง cvui.button ใช้เพื่อวางปุ่มในตำแหน่งที่ต้องการและคำสั่ง cvui.mouse ใช้เพื่อตรวจจับการคลิกเมาส์ เรามีสองคำสั่ง if สำหรับสองปุ่มหากคลิกปุ่มนั้นคำสั่ง if ตามลำดับจะถูกเรียกใช้
if (cvui.button (Full_frame, width - 100, height - 40, "Next") and cvui.mouse (cvui.CLICK)): print ("Next Button Pressed") cvui.init ('screen') cam_no = cam_no +1 if (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.button (Full_frame, width - 200, height - 40, "Previous") และ cvui.mouse (cvui. คลิก)): พิมพ์ ("ปุ่มก่อนหน้ากด") cvui.init ('หน้าจอ') cam_no = cam_no - 1 ถ้า (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
ภายในคำสั่ง if ขึ้นอยู่กับปุ่มเราจะเพิ่มหรือลดจำนวน cam_no จากนั้นลบแคมที่มีอยู่และสร้างแคมใหม่โดยใช้ฟังก์ชันที่เรากล่าวไว้ข้างต้น นอกจากนี้โปรดทราบว่า cvui.init ต้องโทรทุกครั้งเพื่อรีเฟรชหน้าจอ UI
ส่วนสุดท้ายของโค้ดคือการแสดงเฟรมเป็นเอาต์พุตและสำหรับการออกจากหน้าจอเอาต์พุตเมื่อกด q เราเพียงแค่รอการกดแป้นพิมพ์และหากคีย์เป็น 'q' เราจะทำลายหน้าต่างทั้งหมด
cv2.imshow ('screen', Full_frame) ถ้า cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
การทดสอบ Raspberry Pi CCTV Viewer
การทดสอบโค้ดนั้นค่อนข้างตรงไปตรงมาเพิ่มพลัง pi และเปิดโค้ด python ที่ด้านล่างของหน้านี้ ตรวจสอบว่าคุณได้ป้อนข้อมูลรับรองที่ถูกต้องเพื่อให้ลิงก์ RTSP ใช้งานได้ หากคุณต้องการอยู่ในด้านความปลอดภัยคุณสามารถลองใช้เครื่องเล่น VLC บน Pi ซึ่งติดตั้งไว้ล่วงหน้าบน Buster OS
หากทำงานบน VLC เราสามารถมั่นใจได้ว่า pi ของเราเชื่อมต่อกับเครือข่ายเดียวกันและลิงก์ RTSP ทำงานตามที่ควรจะเป็น จากนั้นเปิดโปรแกรมที่ระบุที่ด้านล่างของหน้านี้และเปิดใช้งานโดยใช้ python IDE หากป้อนข้อมูลรับรองถูกต้องคุณจะเห็นหน้าจอต่อไปนี้ ซึ่งจะแสดงฟีดกล้องถ่ายทอดสดด้วยปุ่มสองปุ่มที่ด้านล่าง
เนื่องจากหน้าจอมีหน้าจอสัมผัส TFT คุณจึงสามารถแตะที่ปุ่ม“ ก่อนหน้า” และ“ ถัดไป” เพื่อย้ายไปยังกล้องตัวถัดไป โปรแกรมนี้เขียนขึ้นเพื่อวนระหว่างกล้องสี่ตัวแรกคุณสามารถแก้ไขได้อย่างง่ายดายหากมีกล้องมากกว่า 4 ตัวที่เชื่อมต่อกับ DVR ของคุณ
การทำงานทั้งหมดของโครงการนี้สามารถพบได้ในวิดีโอที่ลิงก์ด้านล่าง หวังว่าคุณจะสนุกกับบทช่วยสอนและเรียนรู้สิ่งที่เป็นประโยชน์หากคุณมีคำถามใด ๆ ฝากไว้ในส่วนความคิดเห็นหรือคุณสามารถใช้ฟอรัมของเราเพื่อโพสต์คำถามอื่น ๆ ของคุณ นอกจากนี้ฉันกำลังวางแผนที่จะเพิ่มคุณสมบัติการตรวจจับการเคลื่อนไหวและการบันทึกวิดีโอในการตั้งค่านี้ดังนั้นโปรดติดตามด้วยเช่นกัน