iT邦幫忙

0

Python pyAutoGUI 轉為EXE後無法辨示圖片

  • 分享至 

  • xImage

各位前輩大大午安,

小弟最近在測試圖像辨示後,輸入帳號、密碼及登入
在PYTHON上執行都可以順利,但是在轉成EXE後,就無法執行,
程式只會顯示「go」之後停住了。

但是若是直接在cmd內輸入python test.py,圖片都可以正常辨示及輸入帳密。
反而產生了exe後,無法正確執行。

我把錯誤給印出來了,會顯示
The confidence keyword argument is only available if OpenCV is installed.

主要錯誤是在
pic_val = pyautogui.locateOnScreen("img/program.png", confidence=0.99)
這行,但是PNG路徑都有圖。

import pyautogui
import os

os.popen("C:/Users/use/AppData/Local/THE/app.exe")

print("go")

# 以圖片搜尋程式是否啟動
pic_val = None
while pic_val is None:
    try:
        pic_val = pyautogui.locateOnScreen("img/program.png", confidence=0.99)
        if pic_val is not None:
            x, y = pyautogui.center(pic_val)
            print('Found pic @ x:', x , ' y:', y)
            pyautogui.click(pic_val)
            pyautogui.press('tab')
            pyautogui.typewrite('ADMIN')
            pyautogui.press('tab')
            pyautogui.typewrite('12345678')
            pyautogui.press('enter')
        # print(inv_settings)
            break
    except Exception as e:
            print(e)
            pass

print("finished")
看更多先前的討論...收起先前的討論...
nrsjdje iT邦新手 5 級 ‧ 2021-10-29 13:16:49 檢舉
更新一下,我產出EXE後,應該停在
pic_val = pyautogui.locateOnScreen("img/program.png", confidence=0.99)
這行,但是我又沒看到任何錯誤訊息。

用PYTHON直接執行是正確的.
nrsjdje iT邦新手 5 級 ‧ 2021-11-01 11:00:57 檢舉
我在想locateOnScreen這個有依附opencv作動,會不會是opencv的問題?
沒有包進exe內?
nrsjdje iT邦新手 5 級 ‧ 2021-11-01 18:51:51 檢舉
更新一下,我把錯誤列出來了
The confidence keyword argument is only available if OpenCV is installed.

圖片路徑是對的,我有把圖給放入
那就不要加confidence 這個參數
pic_val = pyautogui.locateOnScreen("img/program.png")
nrsjdje iT邦新手 5 級 ‧ 2021-11-04 18:16:11 檢舉
問題已解決,謝謝各位大佬們。

主要是 pic_val = pyautogui.locateOnScreen( './img/program.png')
一、我改用 ./ 來讀取路徑
二、去掉confidence
三、program.png的圖片大小要控制,我把圖改小了。

但是第三點仍無法有效的解決為何python直接執行沒問題,但是以pyinstaller打包就無法執行的情況。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
海綿寶寶
iT邦大神 1 級 ‧ 2021-10-29 12:31:40

換個截圖方式
看看這篇有沒有幫助

nrsjdje iT邦新手 5 級 ‧ 2021-10-29 13:15:24 檢舉

謝謝大大回覆,這篇我試過了,若是截圖的方式是可以執行,但我是比對圖片後再動作的。

1
I code so I am
iT邦高手 1 級 ‧ 2021-10-30 23:56:06

圖檔及目錄不會包在Exe內,要另外複製後才能執行。

nrsjdje iT邦新手 5 級 ‧ 2021-11-01 10:52:43 檢舉

是的,我也將圖檔放在同目錄內,依然是不能執行的。

1
yehchitsai
iT邦新手 3 級 ‧ 2021-10-31 07:53:12

該是要這樣的目錄結構才可以執行

test.exe
├─img
│ ├─program.png
...

nrsjdje iT邦新手 5 級 ‧ 2021-11-01 11:00:16 檢舉

謝謝大大回覆,現在目錄結構確實是如此,img有放在資料夾內。

建議你加上這一行代碼,看看執行時的目錄,因為你的代碼在沒讀到檔案時會一直重複讀取,這樣比較能理解問題在哪裡
# 以圖片搜尋程式是否啟動
pic_val = None
# 印出程式執行時的所在目錄
print(os.getcwd())

nrsjdje iT邦新手 5 級 ‧ 2021-11-01 18:57:30 檢舉

謝謝大大回覆,已加上,路徑跟圖片是對的,都沒問題。

1

會不會有可能是圖檔的大小寫問題?
你的code是program.png
但你實際上圖片是program.PNG?
我之前寫其他的程式就有遇過這狀況,你參考看看

nrsjdje iT邦新手 5 級 ‧ 2021-11-04 18:16:47 檢舉

謝謝大大的回覆,當時也有考慮過這個狀況,所以確定program.png都是小寫。

我要發表回答

立即登入回答