尝试让 pyautogui 检测某个像素的颜色,但它一直说颜色存在,即使它不存在。
from pyautogui import *
import pyautogui
import time
import keyboard
import random
import win32api, win32con
import win32com.client as comclt
while 1:
try:
pyautogui.pixel(1400,545)[1] == 213
time.sleep(5)
print ("I can see it!")
time.sleep(10)
except ImageNotFoundException:
print ("No")
我尝试了“pyautogui.pixel”,但这不起作用。
你的代码逻辑上存在一个错误,导致它总是说颜色存在。让我们来分析一下代码并进行修正:
问题所在
在你的代码中:
pyautogui.pixel(1400,545)[1] == 213
这段代码仅仅是
检查
了指定像素的绿色通道值是否等于 213,而没有对结果进行任何处理。无论结果是
True
还是
False
,程序都会继续执行下面的代码,打印 "I can see it!",并暂停 10 秒。
解决方案
你需要使用一个条件语句 (例如
if
) 来根据颜色检测的结果执行不同的操作:
from pyautogui import *
import time
while 1:
try:
# 获取指定像素的颜色
pixel_color = pyautogui.pixel(1400, 545)
# 检查绿色通道是否等于 213
if pixel_color[1] == 213:
print("I can see it!")
time.sleep(10) # 如果找到了颜色,暂停 10 秒
else:
print("Color not found.") # 如果颜色不匹配,打印提示信息
time.sleep(5) # 等待 5 秒
except ImageNotFoundException:
print("No")
在这个修改后的代码中:
-
我们使用
pixel_color = pyautogui.pixel(1400, 545)
获取指定像素的 RGB 颜色值,并将其存储在pixel_color
变量中。 -
使用
if pixel_color[1] == 213:
判断绿色通道是否等于 213。 - 如果条件成立,打印 "I can see it!" 并暂停 10 秒。
- 如果条件不成立,打印 "Color not found." 并暂停 5 秒。
其他建议
-
你可以考虑使用
pyautogui.screenshot()
获取整个屏幕截图,然后再检查特定像素的颜色。这在某些情况下可能更高效。 - 为了提高代码的可读性和可维护性,建议为你的代码添加注释,解释代码的功能和逻辑。
通过以上修改,你的代码应该能够正确地检测特定颜色了。
标签:python,pyautogui From: 78776719