Python ve OpenCV İle Fare Tıklama Konumunu Alarak Görüntüye Yazı Ekleme

0 1.349

Bu yazımızda Python ve OpenCV kullanarak fare tıklama konumunu alacağız ve o konuma istediğimiz bir yazıyı görüntünün üzerine ekleyeceğiz. Daha önce önceden belirli bir konuma gerçek zamanlı yazı yazma işleminin nasıl yapılacağını anlatan bir yazı yazmıştık. Görselin üzerindeki birden fazla konuma yazı eklemek isteseydik bizim için zor olurdu.

Peki, bu süreci otomatikleştirirsek. Yani, tıkladığımız görüntünün koordinatlarını otomatik olarak alırız ve daha sonra önceki blogda yaptığımız gibi cv2.putText () işlevini kullanarak metni bu konuma koyarız.

Bu yazımız da yapacağımız şey budur, yani fare tıklama konumunda görüntülere metin yazın. Bunu yapmak için, bir farecallback fonksiyonu oluşturacağız ve sonra bu işlevi görüntü penceresine bağlayacağız.

Bir fare olayı gerçekleştiğinde fare callback fonksiyonu yürütülür. Fare olayı, fare ile çift tıklama, sol tıklama vb. Gibi yaptığımız her şeyi ifade eder. Mevcut tüm olaylar aşağıdaki kod kullanılarak bulunabilir.

import cv2
events = [i for i in dir(cv2) if 'EVENT' in i]
print events

Aşağıda, çift tıkladığımız bir daire çizen basit bir fare geri arama işlevi örneği.

# mouse callback function
def draw_circle(event,x,y,flags,param):
    if event == cv2.EVENT_LBUTTONDBLCLK:
        cv2.circle(img,(x,y),100,(255,0,0),-1)

Daha sonra bu geri arama işlevini görüntü penceresine bağlamamız gerekir. Bu, aşağıda gösterildiği gibi
cv2.setMouseCallback (window_name, mouse_callback_function) kullanılarak yapılır.

cv2.setMouseCallback('img',draw_circle)

Umarım fare geri arama işlevini anlarsın, şimdi başlayalım

Adımlar:

  • Her sol çift tıklama konumunda görüntünün üzerine metin koyduğumuz bir fare geri arama işlevi oluşturun.
  • Bir görüntü oluşturun veya okuyun.
  • Cv2.namedWindow () kullanarak bir görüntü penceresi oluşturma
  • Fare geri arama işlevini cv2.setMouseCallback () kullanarak görüntü penceresine bağlayın
  • Sonsuz bir while döngüsü kullanarak yeni görüntüyü göster

Kod:

import cv2
import numpy as np
 
font = cv2.FONT_HERSHEY_SIMPLEX
# mouse callback function
def draw_circle(event,x,y,flags,param):
    if event == cv2.EVENT_LBUTTONDBLCLK:
        i = 0
        while True:
            cv2.imshow('image',img) # to display the characters
            k = cv2.waitKey(0)
            cv2.putText(img, chr(k) , (x+i,y), font, 0.5, (0, 255, 0), 2, cv2.LINE_AA)
            i+=10
            # Press q to stop writing
            if k == ord('q'):
                break
 
    
 
# Create a black image, a window and bind the function to window
img = np.zeros((512,512,3), np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_circle)
 
while True:
    cv2.imshow('image',img)
    if cv2.waitKey(20) == 27:
        break
cv2.destroyAllWindows()

Yukarıdaki kodda, yazmayı durdurmak için ‘q’ tuşuna basın ve yeniden yazmaya başlamak için herhangi bir yere çift tıklayın.

Diğer fare olaylarını kullanarak fare geri arama işleviyle oynayabilirsiniz. Umarım okumaktan zevk alırsınız.

Sitemizde onlarca farklı Python ve OpenCv uygulama örneği bulabilirsiniz. Yorumlarınızı bekliyoruz.

 

Kaynak theailearner
Cevap bırakın

E-posta hesabınız yayımlanmayacak.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bununla iyi olduğunuzu varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul etmek Mesajları Oku