Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PyAutoGuiの"locateOnScreen"でのエラーを解決したい。

解決したいこと

PyAutoGuiの"locateOnScreen"で画像を読み込みたい。

発生している問題・エラー

[ WARN:0@2.570] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_('test.png'): can't open/read file: check file path/integrity
Traceback (most recent call last):
  File "test.py", line 6, in <module>
    p = pyautogui.locateOnScreen("test.png")
  File "C:\Users\xxxxx\Anaconda3\lib\site-packages\pyautogui\__init__.py", line 175, in wrapper
    return wrappedFunction(*args, **kwargs)
  File "C:\Users\xxxxx\Anaconda3\lib\site-packages\pyautogui\__init__.py", line 213, in locateOnScreen
    return pyscreeze.locateOnScreen(*args, **kwargs)
  File "C:\Users\xxxxx\Anaconda3\lib\site-packages\pyscreeze\__init__.py", line 373, in locateOnScreen
    retVal = locate(image, screenshotIm, **kwargs)
  File "C:\Users\xxxxx\Anaconda3\lib\site-packages\pyscreeze\__init__.py", line 353, in locate
    points = tuple(locateAll(needleImage, haystackImage, **kwargs))
  File "C:\Users\xxxxx\Anaconda3\lib\site-packages\pyscreeze\__init__.py", line 207, in _locateAll_opencv
    needleImage = _load_cv2(needleImage, grayscale)
  File "C:\Users\xxxxx\Anaconda3\lib\site-packages\pyscreeze\__init__.py", line 170, in _load_cv2
    raise IOError("Failed to read %s because file is missing, "
OSError: Failed to read test.png because file is missing, has improper permissions, or is an unsupported or invalid format

最後のエラー文(下記)から想定するに、パーミッションが原因でしょうか?

OSError: Failed to read test.png because file is missing, has improper permissions, or is an unsupported or invalid format

該当するソースコード

import pyautogui
p = pyautogui.locateOnScreen("test.png")

※同じディレクトリに「test.png」というファイルが置かれている状況です。

自分で試したこと

cv2による画像読み込みは成功しています。

import cv2
p = cv2.imread('test.png')
print(p)

↓出力結果

[[[36 33 32]
  [36 33 32]
  [36 33 32]
...略...

読み込む画像のセキュリティも読み込める状態になっています。
コメント 2022-03-04 184534.png

また、パスを相対パスではなく、絶対パスで試してみても同じエラーが表示されました。

何か分かる方がいらしたらご教授ください。

0

1Answer

下記のメッセージがopencvの出しているエラーです

[ WARN:0@2.570] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_('test.png'): can't open/read file: check file path/integrity

¥¥ではじまるUNCが問題なのかも
cv2による画像読み込みがUNCでないところで試されているのならUNCでcv2による画像読み込みを試されてみるのはどうでしょうか

1Like

Comments

  1. @ichigaya9913

    Questioner

    回答ありがとうございます。
    ご指摘いただいたように、環境やパスを色々と変えて試したところ上手く動きました。

    このような形で解決となり恐縮ですが、ありがとうございました。

Your answer might help someone💌