İçindekiler:

OpenCV Kullanarak Python'da Renk Algılama: 8 Adım
OpenCV Kullanarak Python'da Renk Algılama: 8 Adım

Video: OpenCV Kullanarak Python'da Renk Algılama: 8 Adım

Video: OpenCV Kullanarak Python'da Renk Algılama: 8 Adım
Video: 23 - OpenCV Şekil Algılama 2024, Haziran
Anonim
Image
Image

Merhaba! Bu talimat, openCV kitaplığı kullanılarak python'daki bir görüntüden belirli bir rengin nasıl çıkarılacağı konusunda rehberlik etmek için kullanılır. Bu teknikte yeniyseniz endişelenmeyin, bu kılavuzun sonunda kendi renk algılama programınızı programlayabileceksiniz.

Aşağıda öğreneceğiniz fonksiyonlar veya teknikler diyebiliriz.

1. Bir resim nasıl okunur

2. İz Çubukları nasıl oluşturulur

3. İz çubuklarını kullanarak bir görüntünün Ton, Doygunluk ve değeri değerleri nasıl ayarlanır?

4. Ve sonra nihai çıktınız olacak

Aşağıda eklediğim çıktının videosunu izleyebilirsiniz.

o zaman başlayalım

Gereçler

  • piton 3
  • openCV kütüphanesi
  • numpy kitaplığı

Adım 1: Kitaplıkları İçe Aktarma

Kitaplıkları İçe Aktarma
Kitaplıkları İçe Aktarma

Resim gösterildiği gibi sarı ferrari'ye ait ve bu resimden sadece sarı rengi çıkaracak şekilde programlayacağız.

İlk adım kütüphanelerimizi içe aktarmak olacak

1. openCV kütüphanesi dahil. Python'da cv2 olarak adlandırılır.

2. numpy kütüphanesini np olarak dahil etmek. "As" bize np olarak uyuşturmamıza izin verir, böylece tekrar tekrar numpy yazmamıza gerek kalmaz

2. Adım: İzleme Çubukları Oluşturma

İzleme Çubukları Oluşturma
İzleme Çubukları Oluşturma

Bir görüntüdeki Ton, Doygunluk ve Değer değerlerini ayarlamak için İzleme Çubukları oluşturulur.

cv2.namedWindow("TrackBars") Bu kod satırı yeni bir çıktı penceresi oluşturmak için kullanılır ve pencerenin adı TrackBars olarak verilir (İstediğiniz ismi verebilirsiniz)

cv2.resizeWindow("TrackBars", 600, 250) Bu fonksiyon bir pencereyi yeniden boyutlandırmak için kullanılır. "TrackBars" hangi pencere için yeniden boyutlandırmak istediğinizdir çünkü TrackBars penceresini yeniden boyutlandırmak istediğim için bu ismi yazdım. Ardından iki tam sayı gelir. Bu iki tam sayı genişlik ve yüksekliktir. Boyutu değiştirmek için bu iki sayı ile oynayabilirsiniz

3. Adım: Ton, Doygunluk ve Değer için TrackBar'lar Oluşturma

Ton, Doygunluk ve Değer için TrackBar'lar Oluşturma
Ton, Doygunluk ve Değer için TrackBar'lar Oluşturma
Ton, Doygunluk ve Değer için TrackBar'lar Oluşturma
Ton, Doygunluk ve Değer için TrackBar'lar Oluşturma

Şimdi Ton, Doygunluk ve değer için toplam 6 TrackBar oluşturacağız. Her birinin iki, yani minimum için 1 ve maksimum için 1 olacaktır. openCV'nin createTrackbar işlevini kullanacağız. İlk önce bu fonksiyonun sözdizimini göreceğiz.

cv2.createTrackbar("PENCERE ADI", "ANAPENCERE ADI", "ARALIK"). Bu kafa karıştırıcı olabilir, ancak merak etmeyin, her adımın üzerinden geçeceğiz. OpenCV'de ton değerlerinin 179, doygunluğun 255 ve değerin 255 olduğunu unutmayın.

1. Hue min için TrackBar oluşturma:

cv2.createTrackbar("Ton min", "TrackBars", 0, 179, boş)

Bu Hue min'de trackbar adıdır, TrackBars ana penceredir, 0, kaydırıcımızın olacağı konumdur ve 179, silderin 0-179 arasında hareket edeceği anlamına gelir.

2. hue max için TrackBar oluşturma:

cv2.createTrackbar("Ton max", "TrackBars", 179, 179, boş)

Bu Hue max'da trackbar adıdır, TrackBars ana penceredir, 179, kaydırıcımızın olacağı konumdur ve 179, silderin 179-0'dan hareket edeceği anlamına gelir.

3. Benzer şekilde, sat min, sat max, val min ve val max için resimde gösterildiği gibi adımları tekrarlayın.

Beyaz arka plana sahip görüntü çıktı görüntüsüdür. İz çubuklarınız bu şekilde görünecek

Adım 4: Görüntü Nasıl Okunur ve Yeniden Boyutlandırılır

Resim Nasıl Okunur ve Yeniden Boyutlandırılır
Resim Nasıl Okunur ve Yeniden Boyutlandırılır

cv2.imread(), görüntüyü okumanızı sağlar. Resminizin konumunun, programın kaydedildiği klasörde olması gerektiğini aklınızda bulundurmanız gereken önemli bir düşünce. while döngüsü koyacağız çünkü görüntü okunana kadar çalışmalı veya koşul doğru olana kadar söyleyebiliriz

img = cv2.imread("ferrari.jpg")

  • Bunun içinde, görüntüyü sakladığım " img " değişken adını oluşturdum.
  • cv2.imread içine görüntünün adını uzantısıyla çift tırnak içine yazın

Bir resmi yeniden boyutlandırmak için cv2.resize işlevini kullanacağız. Bu kısım isteğe bağlıdır, yeniden boyutlandırmak isterseniz bu işlevi kullanabilirsiniz.

cv2.resize içine önce görüntünün depolandığı değişken adını, ardından genişliğini ve yüksekliğini yazın

Adım 5: Bir Görüntüye Uygulamak için İzleme Çubuğu Değerlerini Okuma

Bir Görüntüye Uygulamak için İzleme Çubuğu Değerlerini Okuma
Bir Görüntüye Uygulamak için İzleme Çubuğu Değerlerini Okuma
Bir Görüntüye Uygulamak için İzleme Çubuğu Değerlerini Okuma
Bir Görüntüye Uygulamak için İzleme Çubuğu Değerlerini Okuma

Tamam, şimdi izleme çubuğu değerlerini okuyacağız, böylece onu resmimize uygulayabiliriz. Değerleri cv2.getTrackbarPos() fonksiyonunu kullanarak alacağız.

O kısımdan başlayalım…

h_min = cv2.getTrackbarPos("Ton min", "TrackBars")

Yukarıdaki açıklamada, Hue min değerini depolayacağım h_min değişken adında bir değişken oluşturuyorum. Yani cv2.getTrackbarPos'un içinde 1. argüman " Hue min " olurdu çünkü ben ton min değerlerini istiyorum (Yazım, createTrackbar işleviyle tamamen aynı olmalıdır) ve 2. argüman ait olduğu izleme çubuğu penceresinin adı olurdu.

  • Yukarıdaki resimde gösterildiği gibi h_max ve diğer işlevler için aynı işlemi tekrarlayın ve ardından print() kullanarak tüm değerleri yazdırın.
  • Çıktı ikinci resimde gösterilmiştir. h_min, h_max, s_min, s_max, v_min, s_max değerlerini yazdırıyor

Adım 6: Görüntünün Görüntülenmesi ve Üst ve Alt Sınırın Ayarlanması

Görüntünün Görüntülenmesi ve Üst ve Alt Sınırın Ayarlanması
Görüntünün Görüntülenmesi ve Üst ve Alt Sınırın Ayarlanması

Artık ton, doygunluk ve değerin minimum ve maksimum değerine sahibiz, bu değeri görüntüyü filtrelemek için kullanacağız, böylece bir görüntünün belirli renk çıktısını elde edebiliriz.

Bunun için cv2.inRange fonksiyonunu kullanarak bir mask oluşturacağız. Ve ondan önce ton, doygunluk ve değerin üst ve alt sınırını belirleyeceğiz.

Bu nedenle, "low" adlı bir değişken adı oluşturun ve numpy dizi işlevini kullanarak 3'ün tümü için min aralığını aşağıdaki gibi ayarlayın

alt = np.array([h_min, s_min, v_min])

üst için aynı adımı tekrarlayın

üst = np.array([h_max, s_max, v_max])

Şimdi aşağıdaki gibi bir maske oluşturacağız

mask = cv2.inRange(yeniden boyutlandır, alt, üst) cv2.inRang içinde 1. argüman son resmimin saklandığı değişken olacaktır, 2. argüman alt limit ve 3. argüman üst limit olacaktır.

Şimdi ana resmi ve maskeyi göstereceğiz. Görüntülemek için cv2.imshow() işlevini kullanacağız.

cv2.imshow("img", resize) Bu, ana resmi görüntülemek içindir. 1. argüman, istediğiniz herhangi bir isim verebileceğiniz pencerenin adıdır ve 2. argüman, ana resmimin saklandığı ve görüntülemek istediğiniz değişkendir.

Benzer şekilde maske için adımları tekrarlayın

cv2.imshow("Çıktı", maske)

Adım 7: Şimdi Son Adım

Şimdi Son Adım
Şimdi Son Adım

Bu son adımda, arabanın ve ekranın rengini çıkaracağız.

Bir değişken adı sonucu oluşturdum. Yine istediğiniz ismi verebilirsiniz. Bu yüzden birlikte resimlere ekleyip yeni bir resim oluşturacağımız cv2.bitwise_and() fonksiyonunu kullanacağız. Ve her iki görüntüdeki pikseller nerede mevcutsa, bunu evet veya "1" olarak alacaktır.

sonuç = cv2.bitwise_and(yeniden boyutlandır, yeniden boyutlandır, maske=maske)

  • Bunda 1. argüman bizim imajımız olacak
  • 2. argüman da orijinal resmimiz olacak, ancak ardından daha önce oluşturduğumuz maske uygulanmış olacak.
  • Ve son olarak, sadece imshow işlevini kullanarak sonucu görüntüleyin

Sadece bu son adımı kopyalayıp yapıştırın, bu sadece bir gecikmedir ve klavyede " a " tuşuna basarak çıktı penceresinden çıkabilirsiniz.

Adım 8: Nihai Çıktılar

Önerilen: