Mouse Events

Kategori: Computer Vision , 19 Ocak 2020 , JanFranco


Mouse olaylarını kullanarak, her tıkladığımızda bir şekil çizen bir program yazalım. Kütüphaneleri dahil edelim:


import cv2
import numpy as np
Siyah arkaplanlı 512x512 boyutunda bir resim oluşturalım:


img = np.zeros((512, 512, 3), dtype=np.int8)
Daire çizen bir fonksiyon yazalım. Bu fonksiyonun parametrelerini değiştiremeyiz. Farklı isimler verebiliriz ancak sırası ve sayısı bu şekilde olmalı. Fonksiyonda event kontrolü yapacağız. cv2.EVENT_LBUTTONDOWN, sol kliğe tıklanması halinde True değer return eder. Aynı şey RBUTTONDOWN için de geçerli:


def draw_circle(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.circle(img, (x, y), 100, (0, 255, 0), -1)
    elif event == cv2.EVENT_RBUTTONDOWN:
        cv2.circle(img, (x, y), 100, (255, 0, 0), -1)
Burada yeni bir pencere oluşturuyoruz ve setMouseCallback methodu ile bu penceredeki mouse olaylarını takip ediyoruz. Pencere isimleri aynı olmalı ve setMouseCallback methoduna ekstra olarak mouse hareketlerini takip eden bir fonksiyon vermeliyiz:


cv2.namedWindow("Paint")
cv2.setMouseCallback("Paint", draw_circle)
Pencereyi görüntüleyelim:


while True:
    cv2.imshow("Paint", img)
    if cv2.waitKey(20) & 0xFF == 27:
        break

cv2.destroyAllWindows()
Burada yeni bir şey görüyoruz. waitKey methodunun olduğu satırda & 0xFF == 27 şeklinde bir kod mevcut. Buradaki 27 ESC tuşunu temsil eder. ESC tuşuna basıldığında döngü break edilecektir.

>>


Sonraki Yazı: Blending, Pasting
Yorumlar

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