我正在尝试创建一个脚本,一旦找到颜色就会单击它。我不知道怎么办。我所知道的是,代码将在“try”函数之后立即执行。
from pyautogui import *
import pyautogui
import time
import keyboard
import random
import win32api, win32con
import win32com.client as comclt
import subprocess
color =(255,213,0)
while 1:
try
time.sleep(0.1)
pyautogui.click(x,y)
time.sleep(1)
print (x,y)
time.sleep(5)
print ("I can see it!")
time.sleep(10)
pyautogui.hotkey('ctrl', '2')
time.sleep(10)
except ImageNotFoundException:
print ("Nope")
我尝试使用该颜色的单像素图像来找到它,但 pyautogui 只是将其发送到一个角落。
可以使用 pyautogui 的屏幕截图功能找到特定颜色的像素,然后点击该像素。
以下是示例代码:
import pyautogui
import time
color = (255, 213, 0) # 定义要查找的颜色 (RGB)
while True:
# 获取屏幕截图
screenshot = pyautogui.screenshot()
# 循环遍历屏幕截图中的每个像素
for x in range(screenshot.width):
for y in range(screenshot.height):
# 检查当前像素是否与目标颜色匹配
if screenshot.getpixel((x, y)) == color:
# 点击该像素
pyautogui.click(x, y)
print(f"找到颜色!点击坐标:({x}, {y})")
# 等待一段时间,避免重复点击
time.sleep(1)
break
# 如果找到了颜色,跳出外层循环
if screenshot.getpixel((x, y)) == color:
break
else:
# 如果在当前屏幕截图中未找到颜色,则打印消息
print("未找到颜色,继续搜索...")
time.sleep(1)
这段代码会执行以下操作:
-
获取屏幕截图
:
pyautogui.screenshot()
会捕获整个屏幕并返回一个 Pillow Image 对象。 -
循环遍历每个像素
: 使用两个嵌套的
for
循环遍历屏幕截图中的每个像素。 -
颜色匹配
: 使用
screenshot.getpixel((x, y))
获取当前像素的颜色,并与目标颜色color
进行比较。 -
点击像素
: 如果颜色匹配,则使用
pyautogui.click(x, y)
点击该像素。 -
避免重复点击
: 点击后,使用
time.sleep(1)
等待一秒钟,避免重复点击。 -
未找到颜色
: 如果在当前屏幕截图中未找到颜色,则打印消息并使用
time.sleep(1)
等待一秒钟,然后继续循环。
注意 :
- 此代码会点击找到的第一个匹配颜色的像素。
- 可以根据需要调整代码,例如点击所有匹配颜色的像素,或者在找到颜色后执行其他操作。
- 该方法可能效率不高,因为需要遍历每个像素。如果性能是一个问题,可以考虑使用其他图像识别库,例如 OpenCV。