Trackbar

Created with Sketch.

Kazanımlar

  • Trackbar oluşturmayı öğreneceksiniz.
  • OpenCV penceresine istediğiniz rengi atamayı öğreneceksiniz.

Trackbar Oluşturalım !

Hatırlarsanız eski yazılarımda, oluşturduğumuz pencerelere siyah ve beyaz renklerini atamayı öğrenmiştik. Bu renkleri oluşturmak içinde NumPy kütüphanesini kullanmıştık. Şimdi ise istediğimiz herhangi bir rengi atamayı öğreneceğiz.

Tam da bu aşamada yeni bir kavram öğreneceksiniz: Trackbar

Trackbar, bir tür kızak sistemidir. Bu sistem ile renk değişkenlerimize istediğimiz renkleri atarız ve ekranda o rengin gözükmesini sağlarız. Herhangi bir resmin herhangi bir pikseli, 3 adet rengin belirli yoğunluklardaki karışımı ile ifade edilir. Trackbar’daki kızakları kaydırarak istediğimiz tonu ayarlarız be bu şekilde OpenCV penceresinde istediğimiz renkleri görürüz.

Şimdi kodlarımızı yazmaya başlayalım:

Her zamanki gibi öncelikle kütüphanelerimizi ekleyelim. Bu çalışma için cv2 ve numpy kütüphanelerine ihtiyacımız var. Bunun dışında bir de boş bir fonksiyon oluşturuyorum. Bunu daha sonra kullanmam gerekecek.

import cv2
import numpy as np

def nothing(x): 
  pass

Öncelikle elimizde, rengini değiştireceğimiz bir ekran olmalı. Bunun için varsayılan olarak kullanacağımız bir ekran oluşturalım.

img = np.zeros((512,512,3),np.uint8)
cv2.namedWindow("image")

İlk satırda NumPy kütüphanesini kullanarak siyah bir ekran oluşturduk daha sonra bu pencereye bir ad verdik. Bunları zaten nasıl yapacağınızı öğrenmiştiniz.

Pencereye ad vermemizin nedeni ise trackbar arayüzünü bu pencereye yerleştireceğimizi belirteceğiz.

Şimdi trackbar oluşturalım. Bunun için cv2.createTrackBar() fonksiyonunu kullanırız. Bu fonksiyon 5 adet parametre alır.

  1. Kızağın Adı
  2. Kızağın Yerleşeceği Pencere
  3. Kızağın Alacağı Alt Değeri
  4. Kızağın Alacağı Üst Değeri
  5. Boş Fonksiyon

Şimdi tek tek kızaklarımızı oluşturmaya başlayalım:

cv2.createTrackbar("R", 'image', 0, 255, nothing)
cv2.createTrackbar("G", 'image', 0, 255, nothing)
cv2.createTrackbar("B", 'image', 0, 255, nothing)
switch = '0 : OFF n 1 : ON'
cv2.createTrackbar(switch, 'image', 0, 1, nothing)

Kızakları oluşturduğumuza göre artık kodları çalıştırdığımızda karşımıza bu ekran gelecek ama şimdi de kızaklardaki değerleri çekip bunu “image” penceresine yansıtmamız gerekiyor. Bunun içinde sonsuz bir while döngüsü oluşturalım ki, devamlı değer çekebilelim.

while(1):
    cv2.imshow("image", img)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

    r = cv2.getTrackbarPos("R", "image")
    g = cv2.getTrackbarPos("G", "image")
    b = cv2.getTrackbarPos("B", "image")
    img[:] = [b,g,r]

cv2.destroyAllWindows()

7 – 9. satırlarda tek tek kızakların değerlerini çekiyoruz, bu işlem için cv2.getTrackbarPos() fonksiyonunu kullanırız. Bu fonksiyon 2 parametre alır. Sırasıyla kızağın adı ve kızağın bulunduğu pencerenin adı.

Son olarak, 10. satırda da aldığımız değerleri img içine atarak ekranın renginin değişmesini sağladık.

Yorum yapılmamış

Yorumunuzu ekleyin