Neler Yeni

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

Katılım
8 Eylül 2020
Mesajlar
48
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")
 
Yeni mesajlar Yeni Konu Aç      

SON KONULAR

Forum istatistikleri

Konular
991,559
Mesajlar
8,946,014
Üyeler
156,800
Son üye
eray41
Top Bottom