- Προετοιμασία του DVR για ροή RTSP
- Προετοιμασία του Raspberry Pi
- Εγκατάσταση του OpenCV και άλλων βιβλιοθηκών στο Raspberry Pi
- Προγραμματισμός του Raspberry Pi για ροή βίντεο RTSP από CCTV
- Δοκιμή του Raspberry Pi CCTV Viewer
Τα περισσότερα από τα εργασιακά και εμπορικά κτίρια διαθέτουν σήμερα ένα σύστημα παρακολούθησης CCTV για την παρακολούθηση των δραστηριοτήτων. Αλλά πολλές φορές είναι δύσκολο για την ενδιαφερόμενη αρχή ή τα άτομα ασφαλείας να παρακολουθούν συνεχώς τη ζωντανή ροή όλων των καμερών για να αναζητούν ύποπτη δραστηριότητα. Με το όραμα του υπολογιστή και τη μηχανική μάθηση να προχωρούν σε μια γρήγορη φάση, είναι καιρός να κάνουμε τα συστήματα CCTV μας πιο έξυπνα. Σε αυτό το άρθρο, θα συζητήσουμε τον τρόπο λήψης της ροής βίντεο από ένα υπάρχον DVR (όπως το Hikvision DVR) μέσω ροής RTSP με Raspberry pi χρησιμοποιώντας Python και OpenCV. Μόλις το καταλάβουμε, θα μπορέσουμε να αξιοποιήσουμε τη δύναμη του OpenCV σε αυτές τις ροές βίντεο για να ανιχνεύσουμε για ένα συγκεκριμένο αντικείμενο, να διαβάσουμε την πινακίδα του οχήματος, την αναγνώριση προσώπου και τι όχι!
Για χάρη αυτού του σεμιναρίου, θα χρησιμοποιώ ένα CCTV DVR καναλιού 4 Hikvision που είναι ήδη εγκατεστημένο στο κτίριο. Θα μεταδίδουμε και τις 4 οθόνες κάμερας στο Raspberry και θα τις εμφανίζουμε σε οθόνη αφής 5 ιντσών, όπου ο χρήστης μπορεί να αλλάξει μεταξύ κάθε καναλιού, όπως απαιτείται. Το ξέρω αυτό όχι πολύ, λαμβάνοντας υπόψη τη δύναμη του OpenCV και έχω σχέδια να το αυξήσω με ανίχνευση κίνησης, ειδοποίηση βίντεο bugler, παρακολούθηση ατόμων κ.λπ. αλλά ας τα αφήσουμε όλα αυτά για ένα άλλο φροντιστήριο.
Προετοιμασία του 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 σας. Το προεπιλεγμένο όνομα χρήστη θα είναι διαχειριστής, αλλά ο κωδικός πρόσβασης που πρέπει να γνωρίζετε. Η οθόνη σύνδεσης μου για DVR εμφανίζεται παρακάτω, ενδέχεται να διαφέρει στην εμφάνιση.
Βήμα 3: Μετά από μια επιτυχημένη σύνδεση, αναζητήστε τον αριθμό θύρας RTSP στο DVR σας, τις περισσότερες φορές, η προεπιλεγμένη τιμή θα είναι 554 αλλά μπορεί να αλλάξει. Ενώ βρίσκεστε εδώ, παίξτε με τις ρυθμίσεις διαμόρφωσης για να ελέγξετε αν υπάρχει επιλογή ενεργοποίησης του RTSP, εάν όχι μπορείτε να το παραλείψετε. Πρέπει να περάσετε λίγο χρόνο εδώ, καθώς η διαδικασία είναι διαφορετική βάσει του DVR.
Βήμα 4: Προετοιμάστε τον σύνδεσμο RTSP, ο βασικός σύνδεσμος RTSP θα έχει την ακόλουθη μορφή-
rtsp: //
Και πάλι, εξαρτάται από τον τύπο του DVR, μπορείτε να χρησιμοποιήσετε το google για να βρείτε αυτό που θα λειτουργήσει για εσάς. Αυτό που δούλεψε είχε την παρακάτω μορφή, μπορείτε επίσης να δοκιμάσετε με αυτό-
rtsp: //
Οπου
rtsp: // διαχειριστής: [email protected]: 554 / Streaming / Channels / 202 /
Βήμα 5: Παίξτε τη ροή σε VLC για να βεβαιωθείτε ότι η σύνδεση RTSP λειτουργεί. Εγκαταστήστε το VLC σε έναν υπολογιστή που είναι συνδεδεμένος στο ίδιο δίκτυο με το DVR, ξεκινήστε το και πατήστε Ctrl + N για ροή δικτύου. Εισαγάγετε τη διεύθυνση URL όπως φαίνεται παρακάτω και πατήστε ΟΚ.
Εάν ο σύνδεσμος RTSP λειτουργεί όπως θα έπρεπε, θα πρέπει να δείτε μια ζωντανή ροή του CCTV σας στη συσκευή αναπαραγωγής VLC όπως φαίνεται παρακάτω. Εάν ρίξει ένα σφάλμα, τότε πρέπει να μάθετε τον σωστό σύνδεσμο.
Με αυτόν τον τρόπο, δεν χρειάζεται πλέον να μιλάμε για το DVR μας για να συνεχίσουμε με το Raspberry pi.
Προετοιμασία του Raspberry Pi
Στη συνέχεια, πρέπει να ρυθμίσουμε το βατόμουρο 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 install python3-opencv
Στο πρόγραμμά μας, θα χρησιμοποιήσουμε επίσης τη βιβλιοθήκη "cvui" για να δημιουργήσουμε μια βασική διεπαφή χρήστη με δύο κουμπιά που μας επιτρέπουν να περιηγηθούμε μεταξύ των τεσσάρων οθονών. Για να εγκαταστήσετε το cvui ακολουθήστε την παρακάτω εντολή.
Python3 pip εγκατάσταση cvui
Με και τα δύο πακέτα εγκατεστημένα, μπορούμε να μπει στο κύριο πρόγραμμα. Βεβαιωθείτε ότι και τα δύο εγκατεστημένα πακέτα λειτουργούν αγορά προσπαθώντας να τα εισαγάγετε από το τερματικό εντολών του Pi.
Προγραμματισμός του Raspberry Pi για ροή βίντεο RTSP από CCTV
Το πλήρες πρόγραμμα για αυτό το έργο βρίσκεται στο τέλος αυτής της σελίδας. Η εξήγηση του ίδιου έχει ως εξής. Ξεκινάμε το πρόγραμμα συμπεριλαμβάνοντας τα απαιτούμενα αρχεία κεφαλίδας.
εισαγωγή cv2 εισαγωγή cvui
Το επόμενο μέρος του προγράμματος απαιτεί κάποια επεξεργασία. Πρέπει να εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης του DVR σας. Για οθόνη 5 ιντσών, το πλάτος και το ύψος είναι 800 και 480 αντίστοιχα, οπότε μπήκαμε στο ίδιο.
rtsp_username = "admin" rtsp_password = "aswinth347653" πλάτος = 800 ύψος = 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) # Ο αριθμός ταυτότητας για πλάτος είναι 3 cap.set (4, 480) # Ο αριθμός ID για ύψος είναι 480 cap.set (10, 100) # Ο αριθμός ταυτότητας για φωτεινότητα είναι 10qq καπάκι επιστροφής
Μέσα στο main while loop, έχουμε το πρόγραμμά μας να διαβάσουμε ένα πλαίσιο από τη συσκευή λήψης και να το μετατρέψουμε σε πλήρη οθόνη. Το παράθυρο εμφάνισης στο πρόγραμμά μας θα ονομάζεται οθόνη.
επιτυχία, current_cam = cam.read () dim = (πλάτος, ύψος) Full_frame = cv2.resize (current_cam, dim, interpolation = cv2.INTER_AREA) cv2.namedWindow ('screen', cv2.WINDOW_NORMAL) cv2.setWindowProperty ('οθόνη ", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
Στη συνέχεια έχουμε τον κωδικό για δύο κουμπιά που θα τοποθετηθούν στην οθόνη. Η εντολή cvui.button χρησιμοποιείται για να τοποθετήσει το κουμπί σε μια απαιτούμενη θέση και η εντολή cvui.mouse χρησιμοποιείται για την ανίχνευση του κλικ του ποντικιού. Έχουμε δύο αν δηλώσεις για δύο κουμπιά εάν πατηθεί το κουμπί, θα εκτελεστεί η αντίστοιχη δήλωση if .
if (cvui.button (Full_frame, width - 100, height - 40, "Next") και cvui.mouse (cvui.CLICK)): εκτύπωση ("Next Button Pressed") cvui.init ('screen') cam_no = cam_no +1 αν (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 ('οθόνη')
Μέσα στη δήλωση if , με βάση το κουμπί είτε αυξάνουμε είτε μειώνουμε τον αριθμό cam_no και μετά διαγράφουμε το υπάρχον cam και δημιουργούμε ένα νέο cam χρησιμοποιώντας τη λειτουργία που συζητήσαμε παραπάνω. Επίσης, σημειώστε ότι το 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 σας.
Η πλήρης εργασία αυτού του έργου βρίσκεται στο παρακάτω βίντεο. Ελπίζω να απολαύσατε το σεμινάριο και να μάθετε κάτι χρήσιμο εάν έχετε οποιεσδήποτε ερωτήσεις, αφήστε το στην ενότητα σχολίων ή μπορείτε επίσης να χρησιμοποιήσετε τα φόρουμ μας για να δημοσιεύσετε τις άλλες ερωτήσεις σας. Επίσης, σκοπεύω να προσθέσω τη δυνατότητα ανίχνευσης κίνησης και αποθήκευσης βίντεο σε αυτήν τη ρύθμιση, γι 'αυτό μείνετε συντονισμένοι για αυτό.