- DVR'ı RTSP Akışı için hazırlama
- Raspberry Pi'nizi hazırlamak
- OpenCV ve Diğer Kitaplıkları Raspberry Pi'ye Yükleme
- CCTV'den RTSP Video Akışı için Raspberry Pi Programlama
- Raspberry Pi CCTV Görüntüleyiciyi Test Etme
Günümüzde işyeri ve ticari binaların çoğu, faaliyetleri izlemek için kurulmuş bir CCTV gözetim sistemine sahiptir. Ancak çoğu zaman, ilgili makam veya güvenlik görevlilerinin şüpheli etkinlikleri aramak için tüm kameraların canlı yayınını sürekli olarak izlemesi zordur. Hızlı bir aşamada ilerleyen bilgisayar görüşü ve makine öğrenimi ile, CCTV sistemlerimizi daha akıllı hale getirmenin zamanı geldi. Bu makalede, Python ve OpenCV kullanarak Raspberry pi ile RTSP akışı aracılığıyla mevcut bir DVR'den (Hikvision DVR gibi) video beslemesinin nasıl alınacağını tartışacağız. Bunu aldığımızda, belirli bir nesneyi tespit etmek, araç plakasını okumak, yüz tanıma ve ne yapmamak için bu video akışlarında OpenCV'nin gücünden yararlanabileceğiz!
Bu eğitimin iyiliği için, binada halihazırda kurulu olan Hikvision 4 kanallı bir CCTV DVR kullanacağım. Tüm 4 kamera ekranını Raspberry'ye aktaracağız ve bunu kullanıcının her kanal arasında gerektiği gibi geçiş yapabileceği 5 inçlik bir dokunmatik ekranda görüntüleyeceğiz. OpenCV'nin gücünü göz önünde bulundurarak bunu pek bilmiyorum ve bunu hareket algılama, böcek video uyarısı, kişi takibi vb. İle büyütme planlarım var ama hepsini başka bir öğretici için bırakalım.
DVR'ı RTSP Akışı için hazırlama
Ahududu pi donanımına ve python koduna dalmadan önce, DVR'nin RTSP'yi destekleyip desteklemediğini ve ona nasıl erişileceğini kontrol etmek önemlidir. Zamanımın çoğunu burada sıkışmış olarak geçirdim çünkü prosedür her DVR türü için farklı görünüyor ve yapmanız ve bir sürü vuruş yapıp denemeniz gerekiyor. Ama bunu bir kez anladığınızda, her seferinde bir cazibe gibi çalışır.
İlk olarak, DVR sisteminizin kullanıcı adını ve şifresini bildiğinizden ve internete bağlı olduğundan emin olun. Ayrıca bu eğitimde, RTSP'yi yalnızca yerel bir ağdan aktaracağım, eğer statik bir IP'ye sahipseniz, bağlantı noktası iletme yapabilir ve diğer ağlar için aynısını takip edebilirsiniz. Ancak bu öğretici söz konusu olduğunda, her şeyi yerel ağ içinde yapacağız.
Adım 1: DVR'nizin IP adresini bulun. DVR İnternete bağlandığında, kendi IP adresi atanacaktır. Bu IP adresini yönlendirici yapılandırma sayfanızdan veya DVR ekranınızın kendisinden bulabilirsiniz (DVR'a bağlı bir monitörünüz olduğunu varsayarak). Yönlendiricimin IP adresi http://192.168.11.110/ idi (güvenlik nedeniyle değiştirildi)
Adım 2: İstediğiniz herhangi bir web tarayıcısını açın ve IP adresini girin ve enter tuşuna basın. DVR oturum açma sayfasına yönlendirileceksiniz. DVR'niz için kullanıcı adını (benimki değiştirildi) ve şifreyi girmeniz gereken yer. Varsayılan kullanıcı adı admin olacaktır, ancak bilmeniz gereken şifre. DVR için oturum açma ekranım aşağıda gösterilmektedir, görünüşünüz farklı olabilir.
Adım 3: Başarılı bir oturum açtıktan sonra, DVR'nizde RTSP port numarasını arayın, çoğu zaman varsayılan değer 554 olacaktır, ancak değişebilir. Buradayken, RTSP'yi etkinleştirmek için bir seçenek olup olmadığını kontrol etmek için yapılandırma ayarlarıyla oynayın, yoksa atlayabilirsiniz. Prosedür DVR'a göre farklılık gösterdiğinden burada biraz zaman geçirmelisiniz.
Adım 4: RTSP bağlantınızı hazırlayın, temel RTSP bağlantısı aşağıdaki formatta olacaktır:
rtsp: //
Yine, DVR türüne bağlıdır, sizin için çalışacak birini bulmak için google'ı kullanabilirsiniz. Çalışanlar aşağıdaki formata sahipti, bununla da deneyebilirsiniz
rtsp: //
Nerede
rtsp: // admin: [email protected]: 554 / Akış / Kanallar / 202 /
Adım 5: RTSP bağlantınızın çalıştığından emin olmak için akışı VLC'de oynatın. VLC'yi DVR ile aynı ağa bağlı bir bilgisayara kurun, başlatın ve ağ akışı için Ctrl + N tuşlarına basın. URL'yi aşağıda gösterildiği gibi girin ve tamam'a basın.
RTSP bağlantısı olması gerektiği gibi çalışıyorsa, CCTV'nizin VLC oynatıcısında aşağıda gösterildiği gibi canlı bir akışını görmelisiniz. Bir hata verirse, doğru bağlantıyı bulmanız gerekir.
Bunu yaptıktan sonra, artık DVR'ımız hakkında konuşmamıza gerek kalmadı, Raspberry pi ile devam edelim.
Raspberry Pi'nizi hazırlamak
Sonra, ahududu pi'mizi 5 inçlik Ekran ile kurmamız gerekiyor. Bunu birçok kez ele aldığımız için bunun ayrıntılarına girmeyeceğim. Rehberlik için aşağıdaki makaleleri okuyabilirsiniz.
- Raspberry Pi'ye Başlarken
- Raspberry Pi ile 5 İnç Ekranı Arayüz
İçinde Debian Buster OS çalışan bir Raspberry Pi 3 B + kullanıyoruz. Ayrıca mümkünse Pi 4'ü kullanmak ve ayrıca bir soğutucu veya Fan gibi bazı soğutma seçenekleri eklemek iyi bir fikir olabilir çünkü sıcaklığın neredeyse 70 ° C'ye ulaştığını fark ettim. Şu an itibariyle herhangi bir soğutma prosedürü uygulamadım ve kurulumum şöyle görünüyor-
OpenCV ve Diğer Kitaplıkları Raspberry Pi'ye Yükleme
Sonraki adım, OpenCV'yi Raspberry Pi'ye kurmaktır. OpenCV'nin Raspberry pi üzerinde nasıl derleneceğini daha önce tartışmıştık.
- OpenCV'yi Raspberry Pi'ye Yükleme
- OpenCV'ye başlarken
Ya yukarıdaki bağlantıyı takip edebilir ve OpenCV'yi Cmake kullanarak derleyebilir ya da apt-get yöntemiyle kurabilirsiniz. Çok ciddi OpenCV programlamayla ilgilenmiyorsanız, sonrasını tavsiye ederim. OpenCV'yi kurmak için aşağıdaki komutları kullandım.
sudo apt güncelleme sudo apt install python3-opencv
Programımızda, dört ekran arasında gezinmemizi sağlayan iki düğmeli temel bir kullanıcı arabirimi oluşturmak için "cvui" kitaplığından da yararlanacağız. Cvui'yi kurmak için aşağıdaki komutu izleyin.
Python3 pip cvui'yi yükle
Her iki paket kurulduğunda ana programa girebiliriz. Her iki yüklü paketin de çalıştığından emin olun, satın alarak bunları Pi komut terminalinden içe aktarmaya çalışın.
CCTV'den RTSP Video Akışı için Raspberry Pi Programlama
Bu proje için tam program bu sayfanın sonunda bulunabilir. Aynı şeyin açıklaması aşağıdaki gibidir. Programa gerekli başlık dosyalarını ekleyerek başlıyoruz.
cv2 içe aktarma cvui
Programın sonraki bölümü biraz düzenleme gerektiriyor. DVR'nizin kullanıcı adını ve şifresini girmelisiniz. 5 inçlik bir ekran için genişlik ve yükseklik sırasıyla 800 ve 480'dir, bu yüzden aynısını girdik.
rtsp_username = "admin" rtsp_password = "aswinth347653" genişlik = 800 yükseklik = 480 cam_no = 1
Devam edersek, görüntülenmesi gereken kamera numarasını her değiştirdiğimizde kullanılacak bir kamera oluşturma adlı bir fonksiyonumuz var.
def create_camera (channel): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / Akış / kanallar /" + kanal + "02" cap = cv2.VideoCapture () cap.open (rtsp) cap.set (3, 640) # Genişlik için kimlik numarası 3 cap.set (4, 480) # Yükseklik için kimlik numarası 480 cap.set (10, 100) # Parlaklık için kimlik numarası 10qq dönüş başlığı
Ana while döngüsünün içinde, yakalama cihazından bir kare okumak ve onu tam ekrana dönüştürmek için programımız var. Programımızdaki görüntü penceresi ekran olarak adlandırılacaktır.
başarı, current_cam = cam.read () dim = (genişlik, yükseklik) 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)
Ardından ekrana yerleştirilecek iki düğme için kodumuz var. Cvui.button komutu, düğmeyi gerekli bir yere yerleştirmek için kullanılır ve cvui.mouse komutu, fare tıklamasını algılamak için kullanılır. Bizim iki tane var ise iki düğme için ifadeleri butonu tıklandığında, ilgili eğer deyim çalıştırılacaktır.
if (cvui.button (Full_frame, width - 100, height - 40, "Sonraki") ve cvui.mouse (cvui.CLICK)): print ("Sonraki Düğmeye Basıldı") cvui.init ('ekran') 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, "Önceki") ve cvui.mouse (cvui. CLICK)): print ("Önceki Düğmeye Basıldı") cvui.init ('ekran') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
İçinde eğer biz ya artırmak veya azaltmak butonuna dayanan açıklamada, cam_no sayımı ve daha sonra mevcut kam silip yukarıda tartışılan fonksiyonunu kullanarak yeni kam oluşturun. Ayrıca, cvui.init'in UI ekranını yenilemek için her seferinde araması gerektiğini unutmayın.
Kodun son kısmı, çerçeveyi çıktı olarak görüntülemek ve q düğmesine basıldığında çıktı ekranından çıkmak içindir. Sadece bir tuş vuruşunu bekliyoruz ve eğer anahtar 'q' ise, tüm pencereleri yok edeceğiz.
cv2.imshow ('ekran', Full_frame) eğer cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Raspberry Pi CCTV Görüntüleyiciyi Test Etme
Kodu test etmek oldukça basittir, pi'yi güçlendirin ve bu sayfanın altında verilen python kodunu başlatın. RTSP bağlantısının çalışması için doğru kimlik bilgilerini girdiğinizden emin olun. Güvenli tarafta olmak istiyorsanız, buster OS'ye önceden yüklenmiş olarak gelen Pi'deki VLC oynatıcısını kullanmayı da deneyebilirsiniz.
VLC üzerinde çalışıyorsa, pi'mizin aynı ağa bağlı olduğundan ve RTSP bağlantısının olması gerektiği gibi çalıştığından emin olabiliriz. Ardından bu sayfanın altında verilen programı açın ve herhangi bir python IDE kullanarak başlatın. Kimlik bilgileri doğru girilirse, aşağıdaki ekranı göreceksiniz. Altta iki düğmeyle canlı kamera beslemesini gösterir.
Ekranda bir TFT dokunmatik ekran olduğundan, bir sonraki kameraya geçmek için "önceki" ve "sonraki" düğmelerine dokunabilirsiniz. Program ilk dört kamera arasında döngü olacak şekilde yazılmıştır, DVR'nize bağlı 4'ten fazla kamera varsa kolayca değiştirebilirsiniz.
Bu projenin tam çalışması aşağıda bağlantısı verilen videoda bulunabilir. Öğreticiden keyif aldığınızı ve herhangi bir sorunuz varsa yararlı bir şeyler öğrendiğinizi umuyoruz, bunları yorum bölümünde bırakın veya diğer sorularınızı göndermek için forumlarımızı da kullanabilirsiniz. Ayrıca, bu kuruluma hareket algılama ve video kaydetme özelliği eklemeyi planlıyorum, bu yüzden bunun için de bizi izlemeye devam edin.