Moonlight.Prince
80+
- 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")
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")