İçindekiler:

OpenCV Kullanarak Basit Renk Tespiti: 6 Adım
OpenCV Kullanarak Basit Renk Tespiti: 6 Adım

Video: OpenCV Kullanarak Basit Renk Tespiti: 6 Adım

Video: OpenCV Kullanarak Basit Renk Tespiti: 6 Adım
Video: 52 - OpenCV Renk ile Nesne Tespiti 2024, Haziran
Anonim
OpenCV Kullanarak Basit Renk Tespiti
OpenCV Kullanarak Basit Renk Tespiti

Selam! Bugün OpenCV ve python kullanarak canlı bir videodan renk algılamanın basit bir yöntemini göstereceğim.

Temel olarak, sadece gerekli rengin arka plan çerçevesinde olup olmadığını test edeceğim ve OpenCV modüllerini kullanarak o bölgeyi maskeleyeceğim ve aynı anda çerçeveyi görüntüleyeceğim.

Adım 1: Başlık Dosyaları

Başlık Dosyaları
Başlık Dosyaları

Şimdi burada cv2 ve NumPy olmak üzere iki başlık dosyası kullandım. Temel olarak cv2, kodlardaki komutları kullanırken önemli olan tüm c++ dosyalarını (tüm tanımları içerir) yükleyen OpenCV kütüphanesidir.

Numpy, çok boyutlu bir diziyi depolamak için gerekli olan bir python kitaplığıdır. Renk aralığı koordinatlarımızı saklamak için kullanacağız.

Ve np olarak numpy, temelde numpy yerine her seferinde np kullanarak kodumuzun biraz kısaltılmasına yardımcı olur.

2. Adım: Videoyu Yakalama

Videoyu Yakalamak
Videoyu Yakalamak

Python kullanırken bu oldukça basittir. Burada sadece video kaydediciyi açmamız gerekiyor, böylece kareleri kaydetmeye başlayabilir.

Şimdi VideoCapture içindeki değer kamerayı gösteriyor, benim durumumda kamera dizüstü bilgisayarıma bağlı, yani 0.

İkincil kamera vb. için 1'e benzer şekilde gidebilirsiniz. VideoCapture bunun için nesneyi oluşturur.

3. Adım: Çerçeveyi Yakalama ve Rengi Tanımlama

Çerçeve Yakalama ve Rengi Tanımlama
Çerçeve Yakalama ve Rengi Tanımlama

Şimdi burada, görüntüyü çıkarmamıza yardımcı olacak videonun anlık karesini yakalayabilmemiz için bir şeyler yapmalıyız ve ihtiyaca göre bunun üzerinde çalışabiliriz.

"while" döngüsü, döngüyü gereksinim zamanımıza göre çalıştırmamıza yardımcı olacaktır. Şimdi " _, frame = cap.read() " yakalanan Çerçevenin geçerliliğini kontrol etmek için kullanılır ve onu saklar. "cap.read() bir boole değişkenidir ve çerçeve doğru okunursa true değerini döndürür ve çerçeve almazsanız herhangi bir hata göstermez, yalnızca Yok alırsınız.

Şimdi satır 11 ve satır 12, temel olarak algılamamız gereken renk aralığını tanımlar. Bunun için mavi renge alıştım.

Bunun için herhangi bir renkle ilerleyebilirsiniz, sadece o renk için BGR değerlerini yazmanız yeterlidir. Gerçek dünyada belirli bir rengi algılamak amacımıza hizmet etmeyeceğinden, numpy dizileri kullanarak iki dizi tanımlamak daha iyidir, bunun yerine aralık içinde algılaması için bir mavi renk aralığı tanımlayacağız.

Bunun için alt BGR değerlerini ve üst BGR değerlerini depolayan iki değişken tanımladım.

Adım 4: Maskeleme ve Çıkarma

Maskeleme ve Çıkarma
Maskeleme ve Çıkarma

Şimdi çerçeveyi maskeleme ve çerçevenin rengini çıkarma ana görevi geliyor. Maskelemeyi yapmak için OpenCV'deki kütüphanede bulunan önceden tanımlanmış komutları kullandım. Temel olarak maskeleme, çerçevenin bir kısmının kaldırılması işlemidir, yani renk BGR değerleri tanımlanan renk aralığında olmayan pikselleri kaldıracağız ve bu cv2.inRange tarafından yapılır. Daha sonra, piksel değerlerine bağlı olarak maskelenmiş görüntüye renk aralığını uygularız ve bunun için cv2.bitwise_ve kullanacağız, Maske ve renk aralığı değerlerine bağlı olarak renkleri maskeli bölgeye atayacaktır.

cv2 için link bitwise_and:

Adım 5: Sonunda Görüntüleniyor

Sonunda Görüntüleniyor!
Sonunda Görüntüleniyor!

Burada her kareyi bir resim olarak görüntülemek için temel cv2.imshow()'u kullandım. Değişkenlerde depolanan çerçeve verilerine sahip olduğum için onları imshow() içinde alabilirim. Burada orijinal, maskeli ve renkli üç çerçeveyi de gösterdim.

Şimdi while döngüsünden çıkmamız gerekiyor. Bunun için basitçe cv2.wait. Key()'i uygulayabiliriz. Temel olarak, yanıt vermeden önce bekleme süresini söyler. Yani 0'ı geçerseniz sonsuz bekler ve 0xFF mimarinin 64bit olduğunu söyler. " ord() ", basıldığında if bloğunda break komutunu çalıştıracak ve döngüden çıkacak karakteri belirtir.

Ardından cap.release() video kaydediciyi kapatır ve cv2.destroyAllWindows() tüm açılan pencereleri kapatır.

Herhangi bir sorununuz varsa, lütfen bana bildirin.

Kaynak koduna bağlantı:

Önerilen: