Neler Yeni

ekranın belli bir kısmında gelen sayıları algılatma

Katılım
8 Eylül 2020
Mesajlar
49
Dahası  
Reaksiyon skoru
8
İsim
Mert mehmet
yapay zeka kullanarak kodu yazdırmaya çalışmıştım python dilini bilmiyorum.
ekranımı 5 eşit yatay parçaya böldük diyelim en üst ve en alt parçayı algılamayacak geri kalan ekranımdaki bölümler taranacak ve sayıyı algıladığı zaman sanki ben tıklıyormuşum gibi klavyeden sayılara basacak (tek tek basacak)
bunun için ne yapabilirim yapay zeka ile bir türlü sorunumu çözemedim

dosya olarak ekleyemedim buraya kodu atıyorum yanlış bir şey ise uyarırsanız sevinirim

import pyautogui
import pytesseract
from PIL import Image, ImageEnhance, ImageFilter, ImageDraw
import keyboard
import time

# Tesseract'ın yolunu belirt
pytesseract.pytesseract.tesseract_cmd = r'C:\Users\ASUS\AppData\Local\Programs\Tesseract-OCR\tesseract.exe'

# Görüntüyü işleyip OCR ile sadece sayıları algılama işlemi
def ocr_from_region(x, y, width, height, region_number):
# Belirtilen bölgeden ekran görüntüsü al
screenshot = pyautogui.screenshot(region=(x, y, width, height))

# Ekranın işaretli halini görmek için çizim yap
draw = ImageDraw.Draw(screenshot)
draw.rectangle(((0, 0), (width, height)), outline="red", width=5) # Kırmızı çerçeve çiz

# Geçici olarak kaydet (her taramada bu dosya üzerine yazılır)
screenshot.save(f"marked_region_{region_number}.png")

# Görüntüyü işleme: gri tonlama, kontrast artırma ve ölçekleme
image = screenshot.convert('L') # Gri tonlama (siyah beyaz yapar)
image = ImageEnhance.Contrast(image).enhance(3) # Kontrastı artır

# Boyutu artırmak için LANCZOS (eski adıyla ANTIALIAS) filtresini kullan
image = image.resize((width * 2, height * 2), Image.Resampling.LANCZOS) # Boyutu artır (daha net algılama için)

# Netleştirme filtresi uygula
image = image.filter(ImageFilter.SHARPEN)

# OCR ayarları: sadece sayıları algıla
custom_config = r'--oem 3 --psm 6 outputbase digits'
text = pytesseract.image_to_string(image, config=custom_config)

return text.strip()

# Ekranın yatayda 5 eşit dilimine göre tarama fonksiyonu
def detect_and_press_key_in_middle_regions(expected_value, key_to_press):
screen_width, screen_height = pyautogui.size()
region_height = screen_height // 5 # Ekranı 5 eşit parçaya ayırıyoruz
region_width = screen_width # Tam genişliği kapsıyor

while True:
# 1. bölgeyi tara
detected_value_1 = ocr_from_region(0, 0, region_width, region_height, 1)
print(f"1. Bölgedeki Algılanan Değer: {detected_value_1}")

# 2. bölgeyi tara
detected_value_2 = ocr_from_region(0, region_height, region_width, region_height, 2)
print(f"2. Bölgedeki Algılanan Değer: {detected_value_2}")

# 3. bölgeyi tara
detected_value_3 = ocr_from_region(0, 2 * region_height, region_width, region_height, 3)
print(f"3. Bölgedeki Algılanan Değer: {detected_value_3}")

# 4. bölgeyi tara
detected_value_4 = ocr_from_region(0, 3 * region_height, region_width, region_height, 4)
print(f"4. Bölgedeki Algılanan Değer: {detected_value_4}")

# 5. bölgeyi tara
detected_value_5 = ocr_from_region(0, 4 * region_height, region_width, region_height, 5)
print(f"5. Bölgedeki Algılanan Değer: {detected_value_5}")

# Algılanan değerlere göre tuşlara bas
for idx, detected_value in enumerate([detected_value_1, detected_value_2, detected_value_3, detected_value_4, detected_value_5], start=1):
if expected_value in detected_value:
print(f"{key_to_press} tuşuna basılıyor ({idx}. Bölge)...")
keyboard.press_and_release(key_to_press)
time.sleep(1) # 1 saniyelik ara

time.sleep(0.5) # Döngü arasında kısa bir gecikme

# Örnek kullanım
detect_and_press_key_in_middle_regions("5", "5")
 

Alihanyilmaz

80+ Bronze
Katılım
23 Kasım 2023
Mesajlar
1,005
Dahası  
Reaksiyon skoru
298
İsim
Alihan YILMAZ
Ekrana sayı gelmez. Ekranda açılan pencereye bir şeyler yazabilirsin. Gökten de sayı veya yazı gelmez. Gelen bir kaynak olur ve o veriyi gönderen kaynağı belirleyip, o kaynağın verilerini işleyebilirsin.

Önce bir penceren olacak. Sonra o pencerede görüntülenecek veriyi alacağın kaynağı belirleyeceksin ve sonra da o verinin nasıl isleneceğini belirleyeceksin. Verinin bir de türü olur. Hangi türden verilerin isleneceğini de mecburen belirteceksin.
Mesaj otomatik birleştirildi:

Biraz göz gezdirdim. Yukarıdaki kodlar daha çok resim üzerinde tarama yapacak kodlar.
 
Katılım
8 Eylül 2020
Mesajlar
49
Dahası  
Reaksiyon skoru
8
İsim
Mert mehmet
  • Konu Sahibi Konu Sahibi
  • #3
Ekrana sayı gelmez. Ekranda açılan pencereye bir şeyler yazabilirsin. Gökten de sayı veya yazı gelmez. Gelen bir kaynak olur ve o veriyi gönderen kaynağı belirleyip, o kaynağın verilerini işleyebilirsin.

Önce bir penceren olacak. Sonra o pencerede görüntülenecek veriyi alacağın kaynağı belirleyeceksin ve sonra da o verinin nasıl isleneceğini belirleyeceksin. Verinin bir de türü olur. Hangi türden verilerin isleneceğini de mecburen belirteceksin.
Mesaj otomatik birleştirildi:

Biraz göz gezdirdim. Yukarıdaki kodlar daha çok resim üzerinde tarama yapacak kodlar.
ya şimdi şöyle söyşiyeyim oyun oynarken kullanmak istiyorum o yüzden (ekranıma sayılar kayarak geliyor) o sayılara basmam gerekiyor bende yapay zekaya anlatmıstım ekran görüntüsü alalım onu okutalım dedi ama sağlıklı çalışmıyor (ekran görüntülerini kaydedip okuyamama sebebini anlamaya çalıştıgımda ekran görüntülerinde hiçbir sıkıntı olmadıgını fark ettim sayı oldukça rahat okunuyor) ama bir türlü yaptıgım şey düzgün çalışmıyor bunun için önerebileceğin bir kaynak veya yardım edebileceğin bir şey var mı ?
 

Alihanyilmaz

80+ Bronze
Katılım
23 Kasım 2023
Mesajlar
1,005
Dahası  
Reaksiyon skoru
298
İsim
Alihan YILMAZ
ya şimdi şöyle söyşiyeyim oyun oynarken kullanmak istiyorum o yüzden (ekranıma sayılar kayarak geliyor) o sayılara basmam gerekiyor bende yapay zekaya anlatmıstım ekran görüntüsü alalım onu okutalım dedi ama sağlıklı çalışmıyor (ekran görüntülerini kaydedip okuyamama sebebini anlamaya çalıştıgımda ekran görüntülerinde hiçbir sıkıntı olmadıgını fark ettim sayı oldukça rahat okunuyor) ama bir türlü yaptıgım şey düzgün çalışmıyor bunun için önerebileceğin bir kaynak veya yardım edebileceğin bir şey var mı ?
Yok.
 
Top Bottom