Close issue

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üye
Katılım
14 Nis 2024
Mesajlar
2
Tepki puanı
0
Yaş
24
2 HİZMET YILI
bu tür işleri pek anlamıyorum nasıl yapılıyor bide ahk yi vanguard tespit ediyor diye biliyorum
 
Onaylı Üye
Katılım
18 Tem 2023
Mesajlar
49
Tepki puanı
2
Yaş
29
2 HİZMET YILI
bir yazılım kodlama uygulamasına atıpmı çalıştırmam lazım
 
Üye
Katılım
22 Kas 2024
Mesajlar
3
Tepki puanı
0
Yaş
28
1 HİZMET YILI
bunu exe formatına çevirsen çok daha kolay olur, pek çok kişi bunun için kütüphaneleri felan indiremez.
 
Uzman Üye
Katılım
13 Ara 2018
Mesajlar
192
Çözümler
1
Tepki puanı
22
Ödüller
8
Yaş
31
7 HİZMET YILI

Kodun Genel Amacı

Bu Python kodu, şu özelliklere sahiptir:

  1. Ekranın belirli bir bölgesinden ekran görüntüsü alır.
  2. Alınan ekran görüntüsü ile kullanıcı tarafından verilen şablon (örneğin bir resim dosyası) arasında "template matching" yöntemi ile eşleşme arar.
  3. Eşleşme bulunduğunda, fare imlecini otomatik olarak o bölgeye taşır.
  4. Canlı ekran görüntüsünü bir pencerede gösterir.
  5. q tuşuna basıldığında kod durdurulur.

Kodun Ana Bölümleri

1. Gerekli Kütüphaneler

Kodu çalıştırmak için şu Python kütüphanelerine ihtiyacımız var:

  • numpy: Görüntüyü dizilere dönüştürmek ve ışlemler yapmak için.
  • PIL.ImageGrab: Belirli bölgelerden ekran görüntüsü almak için.
  • cv2 (OpenCV): Template matching ve görüntü ışleme için.
  • pyautogui: Fare imlecini hareket ettirmek ve ekran boyutunu almak için.
  • time: Bekleme süresi eklemek için.

2. Template (Şablon) Görüntüsü Yükleme

Python:
path = "BURAYA FOTOĞRAF YOLU BELİRT !!!!!!!!!!!!!!"
template_img = cv2.imread(path)
  • Kullanıcıdan bir şablon görüntüsü dosyası (örneğin bir ikon veya obje resmi) yolu beklenir.
  • OpenCV'nin cv2.imread fonksiyonu ile şablon renkli olarak yüklenir.

3. Ekran Penceresi Boyutlarını Ayarlama

Python:
screen_width, screen_height = pyautogui.size()
window_size = 400
window_half = window_size // 2
window_top_left = (screen_width // 2 - window_half, screen_height // 2 - window_half)
window_bottom_right = (screen_width // 2 + window_half, screen_height // 2 + window_half)
  • pyautogui.size(), ekranın boyutlarını alır.
  • 400x400 piksel boyutunda bir kare penceresi ekranın ortasına yerleştirilir.
  • Bu pencerede, şablonun aranacağı bölge tanımlanır.

4. Ekran Görüntüsü Alınması

Python:
screen_img = ImageGrab.grab(bbox=(window_top_left[0], window_top_left[1],
                                   window_bottom_right[0], window_bottom_right[1]))
screen_np = np.array(screen_img)
  • ImageGrab.grab fonksiyonu ile belirlenen bölgeden ekran görüntüsü alınır.
  • Görüntü, NumPy dizisine dönüştürülerek OpenCV ile işlenmeye hazır hale getirilir.

5. Template Matching (Eşleşme Bulma)

Python:
res = cv2.matchTemplate(screen_np, template_img, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where(res >= threshold)
  • cv2.matchTemplate fonksiyonu, şablon (örnek görüntü) ile ekran görüntüsü arasındaki benzerlik skorunu hesaplar.
  • cv2.TM_CCOEFF_NORMED: Normalleştirilmiş korelasyon katsayısı yöntemidir. Daha iyi ve doğru sonuçlar verir.
  • threshold = 0.8: Eşleşme bulunması için gereken minimum benzerlik skoru (%80).
  • np.where(res >= threshold): Eşleşme bulunan tüm koordinatları döner.

6. Fareyi Eşleşme Noktasına Taşıma

Python:
for pt in zip(*loc[::-1]):
    x = pt[0] + window_top_left[0] + template_img.shape[1] // 2
y = pt[1] + window_top_left[1] + template_img.shape[0] // 2
if is_point_inside_image(x, y, window_top_left, window_bottom_right):
move_cursor(x, y)
  • Bulunan tüm eşleşme noktaları bir döngüyle kontrol edilir.
  • template_img.shape: Şablonun boyutları kullanılarak merkeze ulaşılır.
  • move_cursor(x, y): Fareyi belirtilen koordinatlara taşır.

7. Fare Taşıma Fonksiyonu

Python:
def move_cursor(x, y):
    pyautogui.moveTo(x, y)
  • pyautogui.moveTo fonksiyonu, fare imlecini belirtilen koordinatlara götürür.

8. Canlı Görüntü Gösterimi

Python:
cv2.imshow("Oyun Ekrani", cv2.cvtColor(np.array(screen_img), cv2.COLOR_RGB2BGR))
  • cv2.imshow: OpenCV ile görüntüyü bir pencere içinde gösterir.
  • cv2.COLOR_RGB2BGR: OpenCV'nin renk formatına uygun hale getirir.

9. Döngüyü Durdurma

Python:
if cv2.waitKey(1) & 0xFF == ord('q'):
    break
  • q tuşuna basıldığında döngüyü durdurarak programı kapatır.

Kullanım Senaryoları

Bu kod şu alanlarda kullanılabilir:

  1. Oyun Otomasyonu: Belirli bir nesneyi bulup fareyi o bölgeye taşıyabilir.
  2. Ekran Analizi: Bir simge veya nesne tespit edildiğinde otomatik hareket sağlayabilir.
  3. Otomasyon Projeleri: GUI bazlı yazılım testlerinde veya şablon bazlı aksiyonlarda.

Görsel Akış Özeti

  1. Ekran Görüntüsü Alınır.
  2. Template Matching Yapılır.
  3. Eşleşme Bulunursa Fare Taşınır.
  4. Canlı Ekran Gösterilir.
  5. Döngü q ile Durdurulur.

Avantajlar ve Dezavantajlar

Avantajlar​

  • Basit ve etkili bir yapı sunar.
  • İmleç kontrolü için kolayca uyarlanabilir.
  • Template Matching kullanımı ile hassas nesne tespiti yapar.

Dezavantajlar​

  • Template Matching, çok hassastır. Resmin boyut ve renk farklılıkları sonucu etkileyebilir.
  • Gerçek zamanlı performans, yüksek ekran yenileme hızlarında düşebilir.

Sonuç

Bu kod, hem oyun içi otomasyon hem de genel ekran analizi için etkili bir çözüm sunar. Kodun şablon belirleme hassasiyetini optimize ederek farklı projelerde kullanılabilir hale getirebilirsiniz.
 
♥Crayz Girl♥
Uzman Üye
Katılım
3 Şub 2018
Mesajlar
185
Tepki puanı
17
Ödüller
9
Sosyal
8 HİZMET YILI
sanırım artık iş yapmıyor dün denedim fakat yazmayı unuttum
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst