実現したいこと
画像があればif式が出なけばelse式が動くようにしたいです。
発生している問題・分からないこと
pythonのpyautoguiで画像認識の際、エラーになります。
エラーメッセージ
error
1[ WARN:0@0.130] global loadsave.cpp:248 cv::findDecoder imread_('image.png'): can't open/read file: check file path/integrity 2Traceback (most recent call last): 3 File "c:\Users\kaiko\Desktop\01_フォルダー\01_program\02_Python\04_scratch\02_youok\hantei.py", line 7, in <module> 4 location = pyautogui.locateOnScreen(image_path) 5 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6 File "C:\Users\kaiko\AppData\Roaming\Python\Python311\site-packages\pyautogui\__init__.py", line 175, in wrapper 7 return wrappedFunction(*args, **kwargs) 8 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 9 File "C:\Users\kaiko\AppData\Roaming\Python\Python311\site-packages\pyautogui\__init__.py", line 213, in locateOnScreen 10 return pyscreeze.locateOnScreen(*args, **kwargs) 11 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 12 File "C:\Users\kaiko\AppData\Roaming\Python\Python311\site-packages\pyscreeze\__init__.py", line 373, in locateOnScreen 13 retVal = locate(image, screenshotIm, **kwargs) 14 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 15 File "C:\Users\kaiko\AppData\Roaming\Python\Python311\site-packages\pyscreeze\__init__.py", line 353, in locate 16 points = tuple(locateAll(needleImage, haystackImage, **kwargs)) 17 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18 File "C:\Users\kaiko\AppData\Roaming\Python\Python311\site-packages\pyscreeze\__init__.py", line 207, in _locateAll_opencv 19 needleImage = _load_cv2(needleImage, grayscale) 20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 21 File "C:\Users\kaiko\AppData\Roaming\Python\Python311\site-packages\pyscreeze\__init__.py", line 170, in _load_cv2 22 raise IOError("Failed to read %s because file is missing, " 23OSError: Failed to read image.png because file is missing, has improper permissions, or is an unsupported or invalid format
該当のソースコード
import pyautogui # 探す画像のパス image_path = 'image.png' # 画面上の画像を探す location = pyautogui.locateOnScreen(image_path) if location: print(location) else: print('image not found')
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
結局エラーは変わらなかった。
補足
特になし
pythonコードの先頭に下記を追加して実行して、カレントディレクトリがどこかを確認してください
import os
print(os.getcwd())
「image.png」が置いてある場所はカレントディレクトリでしょうか?
【追記】
質問を読み直したら、画像が無い場合もエラーにならないようにしたいのですね
上記は的外れなので、スルーしてください
失礼しました
https://python.keicode.com/lang/file-exists.php
とかに書かれてる方法で画像ファイルが存在するかどうか確認して、存在する場合だけ「pyautogui.locateOnScreen」を実行するようにしたらいいと思います
コメントありがとうございます。
ファイルが存在する場合だけ「pyautogui.locateOnScreen」を実行を試しましたが、
ファイルは存在していて、エラーは変わりませんでした。
うろ覚えなのですが他のライブラリも必要だった気がします。
調べても出てこないのでお願いします。
> ファイルが存在する場合だけ「pyautogui.locateOnScreen」を実行を試しました
のコードを、質問を編集して追記してください
(ここに書くのではなく、質問を編集して追記)