Object Tracking with HSV Values

Kategori: Python / OpenCV , 11 Ekim 2019 , JanFranco


OpenCV kütüphanesini kullanarak HSV değerleri ile obje takibi yapabiliriz. Herhangi bir öğrenim söz konusu değil, sadece renk değerlerini kullanacağız. HSV (Hue-Saturation-Vibrance) değerleri RGB gibi renk kodlarıdır. İlk olarak videoyu alalım:


vid = cv2.VideoCapture("dog.mp4")
Videodaki her bir frame üzerinde işlem yapabilmek için bir while döngüsü açalım. Her bir adımda, aldığımız frame'i RGB'den HSV'ye çevirelim. Daha sonra alt üst beyaz ton limitleri belirleyerek inRange() methodu ile bir maske oluşturalım. Bu maskeyi kullanarak bitwise_and() methodu ile filtreleme işlemi yapalım:


while(True):
    val, frame = vid.read()
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    sensivity = 15
    lowerWhite = np.array([0, 0, 255-sensivity])
    upperWhite = np.array([255, sensivity, 255])
    mask = cv2.inRange(hsv, lowerWhite, upperWhite)
    res = cv2.bitwise_and(frame, frame, mask)

    cv2.imshow("frame", frame)
    cv2.imshow("mask", mask)
    cv2.imshow("result", res)

    if cv2.waitKey(5) & 0xFF == 27:
        break

cv2.destroyAllWindows()
Döngüyü biraz değiştirelim, contourları kullanarak drawContours() methodu ile objenin sınırlarını da çizelim:


while True:
    _, frame = vid.read()
 
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    sensitivity = 15
    lower_white = np.array([0,0,255-sensitivity])
    upper_white = np.array([255, sensitivity, 255])

    mask = cv2.inRange(hsv, lower_white, upper_white)

    contours, hiy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
    cv2.drawContours(frame, contours, -1, (0,255,0), 5)

    cv2.imshow("frame", frame)
    key = cv2.waitKey(10) & 0xFF
    if key == 27:
        break
Oldukça basit bir takip uygulaması oluşturduk. Basit çünkü objenin bilinmesini geçtim, rengini dahi biliyorduk. Computer Vision bölümünde daha etkili algoritmaları, detayları ile göreceğiz.


Sonraki Yazı: Face Detection, Haar Cascades
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın