- Gerekli Bileşenler
- OpenCV'yi Raspberry Pi'ye Yükleme
- Diğer Gerekli Paketleri Yükleme
- Kişi Sayımı için ThingSpeak Kurulumu
- Donanım Kurulumu
- Kişi Sayacı için Python Programı Açıklaması
- Test etme
Günümüzün en yeni teknolojiler dünyasında, Dijital Görüntü İşleme çok hızlı büyüyor ve mobil, güvenlik kameraları, dizüstü bilgisayarlar vb. Gibi birçok dijital cihazın önemli bir parçası haline geliyor.
Dijital Görüntü İşlemenin en yaygın uygulamaları nesne algılama, Yüz Tanıma ve insan sayacıdır. Bu eğitimde, Raspberry Pi ve ThingSpeak kullanarak bir OpenCV kalabalık sayımı oluşturacağız. Burada pi kamera modülü, kareleri sürekli olarak yakalamak için kullanılacak ve daha sonra bu kareler, görüntüdeki nesneleri algılamak için HOG (Histogram Yönelimli Nesne tanımlayıcı) ile işlenecektir. Bundan sonra, bu çerçeveler OpenCV'nin insan tespiti için önceden eğitilmiş modeliyle karşılaştırılacaktır. Kişi sayımı, dünyanın her yerinden izlenebilen ThingSpeak kanalında gösterilecektir.
Gerekli Bileşenler
Donanım
- Raspberry Pi 3 (herhangi bir sürüm)
- Pi Kamera
Yazılım ve Çevrimiçi Hizmetler
- ThingSpeak
- Python3.0
- OpenCV3.0
OpenCV'yi Raspberry Pi'ye Yükleme
Burada kalabalığı tespit etmek için OpenCV kütüphanesi kullanılacaktır. OpenCV'yi kurmak için önce Raspberry Pi'yi güncelleyin.
sudo apt-get güncellemesi
Ardından OpenCV'yi Raspberry Pi'nize yüklemek için gerekli bağımlılıkları kurun.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev –y sudo apt-get install libatlas-base-dev –y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 -y sudo apt-get install libqt4-testi -y
Bundan sonra, aşağıdaki komutu kullanarak OpenCV'yi Raspberry Pi'ye kurun.
pip3 kurulum opencv-katkıda-python == 4.1.0.25
Daha önce OpenCV'yi Raspberry pi ile kullandık ve üzerinde birçok öğretici oluşturduk.
- OpenCV'yi CMake kullanarak Raspberry Pi'ye yükleme
- Raspberry Pi ve OpenCV ile Gerçek Zamanlı Yüz Tanıma
- Raspberry Pi ve OpenCV kullanarak Plaka Tanıma
Başlangıç seviyesinden başlayarak bir dizi OpenCV öğreticisi de oluşturduk.
Diğer Gerekli Paketleri Yükleme
Raspberry Pi'yi Crowd Counting için programlamadan önce, diğer gerekli paketleri kuralım.
Yükleme imutils : imutils böyle çevirme, döndürme, yeniden boyutlandırma, skeletonize ve OpenCV ile daha kolay Matplotlib görüntüleri göstermek gibi birkaç gerekli görüntü işleme fonksiyonlarını yürütmek için kullanılır. Öyleyse aşağıdaki komutu kullanarak imutils yükleyin:
pip3 imutils yükle
matplotlib : Bundan sonra matplotlib kütüphanesinikurun. Matplotlib , Python'da statik, animasyonlu ve etkileşimli görselleştirmeler oluşturmak için kapsamlı bir kitaplıktır.
pip3 matplotlib'i kurun
Kişi Sayımı için ThingSpeak Kurulumu
ThingSpeak çok popüler bir IoT platformudur ve ThingSpeak platformunu kullanarak verilerimizi İnternet üzerinden her yerden izleyebiliriz. Ayrıca, ThingSpeak tarafından sağlanan Kanalları ve web sayfalarını kullanarak sistemi İnternet üzerinden kontrol etmek için kullanılır. Daha önce birçok IoT tabanlı proje oluşturmak için ThingSpeak'i kullandık.
Önce ThingSpeak'te bir kanal oluşturmak için, önce ThingSpeak'e Kaydolun. Zaten bir ThingSpeak hesabınız varsa, kullanıcı adınızı ve şifrenizi kullanarak oturum açın.
Kaydol'a tıklayın ve bilgilerinizi girin.
Bundan sonra, E-posta kimliğinizi doğrulayın ve devam et düğmesine tıklayın.
Şimdi, giriş yaptıktan sonra, " Yeni Kanal " düğmesine tıklayarak yeni bir kanal oluşturun.
" Yeni Kanal " ı tıkladıktan sonra, bu kanala yüklemek istediğiniz verilerin Adını ve Açıklamasını girin. Burada Kişiler adında bir alan oluşturduk. Gereksinimlere göre birden fazla alan oluşturulabilir.
Bundan sonra, ayrıntıları kaydetmek için kanalı kaydet düğmesine tıklayın.
ThingSpeak'e veri göndermek için API anahtarını ve kanal kimliğini Python komut dosyasına girin, bu nedenle API anahtarını ve kanal kimliğini kopyalayın.
Donanım Kurulumu
Burada, bu OpenCV insan sayma projesi için sadece Raspberry Pi ve Pi kamerasına ihtiyacımız var ve sadece kamera şerit konektörünü Raspberry pi'de verilen kamera yuvasına takmanız gerekiyor.
Pi kamera, Raspberry Pi Gözetleme Kamerası, Ziyaretçi İzleme Sistemi, Ev Güvenlik Sistemi vb.Gibi çeşitli ilginç projeler oluşturmak için kullanılabilir.
Kişi Sayacı için Python Programı Açıklaması
Bu kitle sayma OpenCV projesi için tam python kodu sayfanın sonunda verilmiştir. Daha iyi bir açıklama için burada kodun önemli bölümlerini açıklıyoruz.
Dolayısıyla, kodun başlangıcında, bu projede kullanılacak tüm gerekli kitaplıkları içe aktarın.
ithal cv2 imutils'i imutils.object_detection'dan içe aktar non_max_suppression np içe aktarma istekleri olarak içe aktarım zamanı içe aktarım base64 matplotlib'den plt olarak urllib'den içe aktar.request import urlopen
Kitaplıkları içe aktardıktan sonra, ThingSpeak kanal kimliğini girin ve daha önce kopyaladığınız bir API anahtarını yazın.
channel_id = 812060 # PUT CHANNEL ID HERE WRITE_API = 'X5AQ3EGIKMBYW31H' # YAZMA ANAHTARINIZI BURAYA KOYUN BASE_URL = "https://api.thingspeak.com/update?api_key= {}". format (WRITE_API)
Şimdi, HOG'u (Histogram Odaklı Nesne tanımlayıcısı) başlatın. HOG, nesne algılama için en popüler tekniklerden biridir ve çeşitli uygulamalarda kullanılmıştır. cv2.HOGDescriptor_getDefaultPeopleDetector () , kişi algılama için önceden eğitilmiş bir OpenCV modelini çağırmak için kullanılır. HOG'u daha önce önceki OpenCV eğitiminde ayrıntılı olarak açıkladık.
hog = cv2.HOGDescriptor () hog.setSVMDetector (cv2.HOGDescriptor_getDefaultPeopleDetector ())
İçinde detektörü (), Pi, üç renk kanalı içine bir RGB görüntü bölünmüş alır. Ondan sonra imutils kullanarak görüntüyü yeniden boyutlandırır. Ardından, SVM modelinden elde edilen sınıflandırma sonucunu kullanarak bir kişinin var olup olmadığını öğrenmek için görüntüyü analiz etmek için DetectionMultiScale () yöntemini çağırır.
def detektörü (resim): image = imutils.resize (image, width = min (400, image.shape)) clone = image.copy () rects, weight = hog.detectMultiScale (image, winStride = (4, 4), dolgu = (8, 8), ölçek = 1.05)
Bazen yakalama kutuları üst üste gelir ve yanlış pozitifler veya algılama hataları üretir, bu nedenle aşağıdaki kod, imutillerden başlama örtüşen kutulara maks. Olmayan bastırma uygular.
(x, y, w, h) için, cv2.rectangle (image, (x, y), (x + w, y + h), (0, 0, 255), 2) rects = np.array ((x, y, w, h) için rects]) sonuç = non_max_suppression (rects, probs = None, overlapThresh = 0.7) dönüş sonucu
İçinde Kayıt () fonksiyonu, bu kullanarak Pi doğrudan kameradan görüntü alır VideoCapture () , OpenCV dan yöntemi imultis kullanarak boyutlandırır ve ThingSpeak sonuçları gönderir.
def kaydı (sample_time = 5): camera = cv2.VideoCapture (0) frame = imutils.resize (çerçeve, genişlik = min (400, çerçeve.shape)) sonuç = algılayıcı (çerçeve.copy ()) thingspeakHttp = BASE_URL + " & field1 = {} ". biçim (sonuç1)
Test etme
Python betiğini başlatmadan önce, ilk olarak PI kameranızın çalışıp çalışmadığını kontrol edin. Kamerayı inceledikten sonra, aşağıdaki komutu vererek python komut dosyasını başlatın:
Ardından, içinde video yayınınızın bulunduğu bir pencere göreceksiniz. Pi ilk kareyi alacak ve kişi sayısını tespit etmek için OpenCV'yi kullanarak işleyecektir. İnsanları tespit ederse, etrafında şöyle bir kutu bulacaksınız:
Şimdi dünyanın her yerinden kalabalık boyutunu izleyebileceğiniz ThingSpeak kanalınızı kontrol edin.
Raspberry Pi'yi kullanarak OpenCV kalabalık sayımını bu şekilde yapabilirsiniz. Çalışma videosu ve kodu sayfanın sonunda verilmiştir.