İçindekiler:

OpenCV Temel Projeleri: 5 Adım
OpenCV Temel Projeleri: 5 Adım

Video: OpenCV Temel Projeleri: 5 Adım

Video: OpenCV Temel Projeleri: 5 Adım
Video: OpenCV + Python ile Yüz Algılama Projesi 2024, Temmuz
Anonim
OpenCV Temel Projeleri
OpenCV Temel Projeleri

Bu projede, canlı video akışını içeren 4 basit proje aracılığıyla bazı temel OpenCV işlevlerini keşfediyoruz. Bunlar yüz tanıma, arka plan kaldırma, kenarların özel görsel olarak işlenmesi ve canlı video akışına bulanıklaştırma efekti uygulanmasıdır. Bu projeleri denemekteki asıl amacım, bilgisayarla görü alanında daha derine inmeyi planladığımdan, OpenCV arayüzüyle ayaklarımı ıslatmaktı.

Gereçler

  • Python çalıştıran bilgisayar
  • Açık CV kitaplığı, Numpy kitaplığı, tkinter kitaplığı, sys kitaplığı
  • Bilgisayara bağlanacak kamera (bilgisayar zaten yoksa)
  • Programın python dosyası (bu talimata dahildir)
  • haarcascade xml dosyası (bu talimata dahildir)

Adım 1: FaceDetect İşlevi

FaceDetect İşlevi
FaceDetect İşlevi
FaceDetect İşlevi
FaceDetect İşlevi

Bu işlev, kameranızın videosunu, aldığı tüm yüzlerde yeşil karelerle gösterir. Kodda, yakaladığımız videoyu "capture" adlı bir nesnede saklamak için cv2. VideoCapture() işlevini kullanıyoruz. CAPTURE_INDEX, bilgisayarınızın video giriş listesindeki kameranızın dizinine karşılık gelen, bilgisayarınız tarafından ayarlanan bir sayıdır. Bilgisayarınıza bağlı bir dış kameranız yoksa 0 veya 1 çalışmalıdır.

face_cascade nesnesi, cascadeClassifier işlevi ve OpenCV github'da bulunan "haarcascade_frontalface_default.xml" dosyası kullanılarak başlatılır. Bu nesneyi, "yüzler" listesinde algılanan yüzleri, yüzleri x koordinatı, y koordinatı, genişlik ve yüksekliği tutan dört yönlü bir giriş olarak saklamak için kullanırız. Daha sonra cv2.rectangle işlevini kullanarak yüzü mükemmel şekilde çevreleyen bir dikdörtgen çizeriz.

OpenCV, bu videodan, Capture.read() kullanarak while döngümüzdeki birçok görüntüyü yakalar ve görüntüyü "img" adını verdiğimiz bir çerçeveye kaydeder. Her görüntü daha sonra istediğimiz gibi yorumlanır ve değiştirilir. faceDetect için, ilk parametrede verilen herhangi bir görüntüyü ikinci parametrede belirtilen belirli bir görüntü rengi türüne dönüştüren cvtColor işlevini kullanarak görüntüyü gri yaparız. İkinci parametre için kabul edilebilir değerlerin listesi çevrimiçi olarak bulunabilir. Ardından, pencere adı ve görüntülenecek resim çerçevesi için bir dize alan imshow() işlevini kullanarak "Detecting the face" adlı bir pencerede görüntüyü gösteriyoruz.

Son olarak cv2.waitKey() fonksiyonunu kullanarak kullanıcının q tuşunu girmesini bekliyoruz. 0xFF maskesi, 64 bit bilgisayarlar için bir kural olarak kullanılır. Kullanıcı video akışını sonlandırdıktan sonra, faceDetect işlevi yakalama nesnesini serbest bırakır ve ardından OpenCV arayüzü altında açılan diğer tüm pencereleri yok eder. Diğer tüm işlevler benzer bir tasarım yapısını takip eder.

2. Adım: Arka Plan Kaldırma İşlevi

Arka PlanKaldır İşlevi
Arka PlanKaldır İşlevi
Arka PlanKaldır İşlevi
Arka PlanKaldır İşlevi

Bu işlev, videomuzun arka plan kısmını kaldırmaya ve yalnızca ön plan görüntüsünü bırakmaya çalışır. Çerçeveye farklı nesneler/odaklar girdiğinde etkinleştirilen bir aydınlatma ayarlama işlevi kullandıklarından, bazı kameralarda çalışmayabilir. BackgroundRemove işleviniz çalışmıyorsa endişelenmeyin, bu yalnızca kameranız olabilir!

Bu işlevi kullanmak için kamera çerçevesinden uzaklaşın ve arka plan görüntüsünü yakalamak için "d" tuşuna basın. Arka planda yakalamak istediğiniz hareketli nesne olmaması önemlidir. Ardından, kamera çerçevesine geri dönebiliriz. İşlev işe yaradıysa, kullanıcı yalnızca işlevin video akışında kendilerini görmelidir. Ön plan görüntüsündeki herhangi bir parazit/siyah leke, kameranın aydınlatma ayarının bir sonucu olabilir. Başka bir arka plan yakalamak için yeniden başlatmak için "r" tuşuna basın, ardından tekrar "d" tuşuna basın.

Bu işlev için bazı önemli çıkarımlar, kullanıcı d düğmesine bastığı anda kaldırılan "bayrak" booleanının kullanılmasıdır. Bu, arka planı yakalar ve bunu işlev tarafından yayınlanan videodan kaldırmamıza olanak tanır. Herhangi bir hareketli nesneyi yakalayan ön plan görüntüsünden ayırt edebilmemiz için arka plan görüntüsünü ref_img içinde saklamayı amaçlıyoruz. Ön zemin görüntüsünü arka plan görüntüsünden çıkarmak ve bunun tersini yapmak için cv2.subtract() işlevini kullanırız, ardından hemen ardından iki görüntüdeki küçük farklılıkları iptal ederiz. Arka plan karartılmış.

Fgmask, bu iki görüntü arasındaki fark kullanılarak yapılır ve ardından OpenCV cv2.bitwise_and() işlevi kullanılarak işlev video akışına uygulanır.

3. Adım: VideoEdges İşlevi

VideoEdges İşlevi
VideoEdges İşlevi
VideoEdges İşlevi
VideoEdges İşlevi

Bu işlev, canlı video akışımızı döndürür, ancak diğer her şey karartılırken algılanabilir kenarlar beyaza dönüştürülür. Bu işlevi diğer işlevlerden ayıran şey, orijinal videomuzun RBG formatından ton, doygunluk ve varyasyon anlamına gelen HSV'ye dönüştürülmesidir; bu, bir videodan ışık ve rengi işlemenin farklı bir yöntemidir. Bu yöntemle videodaki anahatları bir filtre uygulayarak (red_low - red_high) daha kolay ayırt edebiliyoruz.

Canny Edge Detection, bir görüntüdeki kenarları algılamak için kullanılır. Girdi olarak gri skalalı bir görüntüyü kabul eder ve çok aşamalı bir algoritma kullanır.

Adım 4: VideoBlur İşlevi

VideoBulanıklaştırma İşlevi
VideoBulanıklaştırma İşlevi
VideoBulanıklaştırma İşlevi
VideoBulanıklaştırma İşlevi

Bu işlev, video akışımıza bulanıklaştırma efekti eklemek için kullanılır. Basit işlev, çerçevemizdeki GaussianBlur cv2 işlevini çağırır. GaussianBlur işlevi hakkında daha fazla bilgiyi burada bulabilirsiniz:

opencv-python-tutroals.readthedocs.io/en/l…

Adım 5: İyileştirmeler

Bu projedeki en hassas işlev, aydınlatma ayarı işlevi olmayan bir kamera kullanımını gerektirdiğinden arka plan kaldırma işlevidir. OpenCV kitaplığında, bu aydınlatma ayarını hesaba katabilecek ve arka planı düzgün bir şekilde kaldırabilecek (yeşil ekrana benzer) daha iyi bir dizi işlev olabilir.

Sadece (x, y) koordinatlarını döndürmek dışında daha fazla işlevselliğe sahip nesneler üretebilecek diğer yüz algılama işlevlerini de kullanabiliriz. Belki de yüzleri hatırlama yeteneğine sahip bir yüz tanıma programını uygulamak çok zor olmayacaktır.

Bulanıklaştırma işlevi, kullanıcı tarafından sezgisel kontrol yoluyla daha fazla özelleştirme yapılabilir. Örneğin, kullanıcı bulanıklaştırma efektinin yoğunluğunu ayarlamak veya çerçeve içinde bulanıklaştırılacak belirli bir alanı seçmek isteyebilir.

Önerilen: