Image kann nicht gefunden werden (Python)

albaum

Ensign
Registriert
Juli 2014
Beiträge
227
Hallo zusammen,

ich will einen ganz einfachen Python Code ausführen aber erhalten immer dieselbe Fehlermeldung.
So wie ich es verstehe kann das Bild nicht geladen werden. Egal, ob ich den kompletten Pfad des Bildes eingebe oder das Bild im selben Ordner ist:
1784898526375.png

Es funktioniert einfach nicht. Was mache ich falsch?

Ich weiß, dass ich Anfänger bin, aber bei so Problemen werde ich verrückt...

Code:
from pyautogui import *
import time
import keyboard
import pyautogui
print(pyautogui.size())
import win32api
import win32con
import pyscreeze

def click():
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)
time.sleep(0.1)


while 1:
if pyautogui.locateCenterOnScreen('AngelnSymbol.png', confidence=0.7) is not None:
print("I can see it")
time.sleep(0.5)
else:
print("I can't see it")
time.sleep(0.5)

Fehlermeldung:
Code:
Traceback (most recent call last):
  File "C:\Users\denni\PycharmProjects\RobloxAngeln2\.venv\Lib\site-packages\pyautogui\__init__.py", line 172, in wrapper
    return wrappedFunction(*args, **kwargs)
  File "C:\Users\denni\PycharmProjects\RobloxAngeln2\.venv\Lib\site-packages\pyautogui\__init__.py", line 204, in locateCenterOnScreen
    return pyscreeze.locateCenterOnScreen(*args, **kwargs)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "C:\Users\denni\PycharmProjects\RobloxAngeln2\.venv\Lib\site-packages\pyscreeze\__init__.py", line 447, in locateCenterOnScreen
    coords = locateOnScreen(image, **kwargs)
  File "C:\Users\denni\PycharmProjects\RobloxAngeln2\.venv\Lib\site-packages\pyscreeze\__init__.py", line 405, in locateOnScreen
    retVal = locate(image, screenshotIm, **kwargs)
  File "C:\Users\denni\PycharmProjects\RobloxAngeln2\.venv\Lib\site-packages\pyscreeze\__init__.py", line 383, in locate
    points = tuple(locateAll(needleImage, haystackImage, **kwargs))
  File "C:\Users\denni\PycharmProjects\RobloxAngeln2\.venv\Lib\site-packages\pyscreeze\__init__.py", line 257, in _locateAll_opencv
    raise ImageNotFoundException('Could not locate the image (highest confidence = %.3f)' % result.max())
pyscreeze.ImageNotFoundException: Could not locate the image (highest confidence = 0.600)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\denni\PycharmProjects\RobloxAngeln2\main.py", line 17, in <module>
    if pyautogui.locateCenterOnScreen('AngelnSymbol.png', confidence=0.7) is not None:
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\denni\PycharmProjects\RobloxAngeln2\.venv\Lib\site-packages\pyautogui\__init__.py", line 174, in wrapper
    raise ImageNotFoundException  # Raise PyAutoGUI's ImageNotFoundException.
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pyautogui.ImageNotFoundException
 
Zuletzt bearbeitet:
Ausschnitt des Quelltextes dazu wäre natürlich nicht vekehrt. E: Ach, der versteckt sich im Spoiler...
Und in deinem Fehler steht was von Bot.py und nicht main.py, welche dein Screenshot zeigt. Wirklich im selben Verzeichnis?
 
Zuletzt bearbeitet: (E...)
Wie führst du das Skript aus?
Ich tippe mal darauf, dass dein Working Dir "falsch" ist. Wenn du das Skript einfach doppelt klickst, könntest du ggf das cwd auf das aktuelle Skript ändern:
Code:
os.chdir(os.path.dirname(os.path.abspath(__file__)))

Edit: sieht man auch hier:
"C:\Spiele und andere Programme\AngelnSymbol.png"


madmax2010 hat Recht. Es geht nicht darum, dass er deine lokale Datei nicht findet - sondern, dass er das Bild auf deinem Screen nicht findet. Die Exception war etwas irreführend.
1784900465548.png



https://pyautogui.readthedocs.io/en/latest/screenshot.html?highlight=save+image#the-locate-functions
1784900587282.png


Er hat highest confidence = 0.600; du erwartest jedoch 0.7.
 
Zuletzt bearbeitet:
Ich habe den Fehlercode aktualisiert - ist im richtigen Verzeichnis.

Ich mache Rechtsklick in PyCharm und klicke auf "Run main".
Wo soll "os.chdir(os.path.dirname(os.path.abspath(file)))" eingefügt bzw. ausgeführt werden?
 
eh lol
kenne die lib nicht, aber scheinbar ist sie sich "unsicher" was bei so was deterministischem quatisch ist

mach doch mal confidence=0.5
Ergänzung ()

ahh, geht um die platzierung des bildes in der GUI ->
The optional confidence keyword argument specifies the accuracy with which the function should locate the image on screen. This is helpful in case the function is not able to locate an image due to negligible pixel differences:
https://pyautogui.readthedocs.io/en/latest/screenshot.html?highlight=save+image

vermutlich ist der richtige fix, das bild anders zuzuschneiden, soweit ich andere threads dazu verstehe
 
  • Gefällt mir
Reaktionen: Wo bin ich hier
Du suchst mit einer Wahrscheinlichkeit von 70%, er findet aber nur ein Bild mit 60%.

Einfach den Wert runterstellen und es sollte klappen. Oder alternativ (ich vermute du suchst auf Windows) die Skalierung auf 100% einstellen. Wenn 125% eingestellt sind, kann das manchmal fehler verursachen.
 
Zurück
Oben