質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PyAutoGUI

PyAutoGUIは、Windows、Mac OS、Linuxに対応した、Python用のGUI自動化ライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

652閲覧

pythonのpyautoguiで画像認識の際、エラーになる

kaikoyam

総合スコア0

PyAutoGUI

PyAutoGUIは、Windows、Mac OS、Linuxに対応した、Python用のGUI自動化ライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2024/01/15 22:39

実現したいこと

画像があれば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等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

結局エラーは変わらなかった。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2024/01/16 00:39 編集

pythonコードの先頭に下記を追加して実行して、カレントディレクトリがどこかを確認してください import os print(os.getcwd()) 「image.png」が置いてある場所はカレントディレクトリでしょうか? 【追記】 質問を読み直したら、画像が無い場合もエラーにならないようにしたいのですね 上記は的外れなので、スルーしてください 失礼しました
jbpb0

2024/01/16 00:42

https://python.keicode.com/lang/file-exists.php とかに書かれてる方法で画像ファイルが存在するかどうか確認して、存在する場合だけ「pyautogui.locateOnScreen」を実行するようにしたらいいと思います
kaikoyam

2024/01/16 10:18

コメントありがとうございます。 ファイルが存在する場合だけ「pyautogui.locateOnScreen」を実行を試しましたが、 ファイルは存在していて、エラーは変わりませんでした。 うろ覚えなのですが他のライブラリも必要だった気がします。 調べても出てこないのでお願いします。
jbpb0

2024/01/16 11:40

> ファイルが存在する場合だけ「pyautogui.locateOnScreen」を実行を試しました のコードを、質問を編集して追記してください (ここに書くのではなく、質問を編集して追記)
guest

回答1

0

反応が無いので削除します。

投稿2024/01/20 11:20

編集2024/05/02 18:43
hiroki-o

総合スコア483

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問