首页 > 编程问答 >如何找到并点击特定颜色的pyautogui?

如何找到并点击特定颜色的pyautogui?

时间:2024-07-22 07:13:00浏览次数:12  
标签:python pyautogui

我正在尝试创建一个脚本,一旦找到颜色就会单击它。我不知道怎么办。我所知道的是,代码将在“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)

这段代码会执行以下操作:

  1. 获取屏幕截图 : pyautogui.screenshot() 会捕获整个屏幕并返回一个 Pillow Image 对象。
  2. 循环遍历每个像素 : 使用两个嵌套的 for 循环遍历屏幕截图中的每个像素。
  3. 颜色匹配 : 使用 screenshot.getpixel((x, y)) 获取当前像素的颜色,并与目标颜色 color 进行比较。
  4. 点击像素 : 如果颜色匹配,则使用 pyautogui.click(x, y) 点击该像素。
  5. 避免重复点击 : 点击后,使用 time.sleep(1) 等待一秒钟,避免重复点击。
  6. 未找到颜色 : 如果在当前屏幕截图中未找到颜色,则打印消息并使用 time.sleep(1) 等待一秒钟,然后继续循环。

注意 :

  • 此代码会点击找到的第一个匹配颜色的像素。
  • 可以根据需要调整代码,例如点击所有匹配颜色的像素,或者在找到颜色后执行其他操作。
  • 该方法可能效率不高,因为需要遍历每个像素。如果性能是一个问题,可以考虑使用其他图像识别库,例如 OpenCV。

标签:python,pyautogui
From: 78776533

相关文章

  • 一个简单的问题(python、串行通信和arduinos)
    只是一个关于小脚本的快速问题,由于某种原因无法工作我运行了这个脚本:importserialimporttimeimportturtledefserialreading():serialPort=serial.Serial(port="COM5",baudrate=9600,bytesize=8,timeout=2,stopbits=serial.STOPBITS_ONE......
  • 我在 Windows 10 上运行 Python 代码后控制台立​​即关闭
    虽然我在代码末尾使用input(),但在Windows10(IDLE之外)的窗口中输入名称后,控制台仍然立即关闭,并且我看不到结果。我该怎么做才能阻止控制台关闭?#!python3name=input('Enteryourname:')print('Hello'+name)input('pressEntertoexit:')你在代码末尾......
  • 具有未定义嵌套列表深度的嵌套列表的Python注释类型
    [[1,2,3],3,[2,4],5]的类型是list[list[int]|int]但是,如果嵌套列表具有未定义的深度,例如[[[1,2]],2,[1,[3,[3]]]],3,[2,[2]]],那么它会具有什么类型?可以使用递归类型提示来表示任意深度嵌套的列表:fromtypingimportList,Union......
  • 在Spyder(Python 3.6)中导入cv2时出现导入错误
    我已经在Windows操作系统中安装了opencv3.0.0。我已运行该应用程序并已成功将其安装在C:\驱动器中,并且还将cv2.pyd文件复制到C:\Python27\Lib\site-packages中,正如我在几个教程视频中看到的那样在我的Python2.7.5Shell中,即当我键入>>>i......
  • Python + VS Code 调试器:可视化我的程序当前正在执行的源代码中的位置?
    当我使用VSCodePython调试器时:我可以执行我的程序,以便编辑器将我逐行带到源代码中的任何位置(跳转到相关文件/如果尚未打开则将其打开)目前的执行情况是?是的,VSCode的Python调试器可以让你逐行执行代码,并实时显示当前执行的位置。以下是操作方法:1.设置断点:......
  • 如何立即取消使用 Ollama Python 库生成答案的 Asyncio 任务?
    我正在使用Ollama通过OllamaPythonAPI从大型语言模型(LLM)生成答案。我想通过单击停止按钮取消响应生成。问题在于,只有当响应生成已经开始打印时,任务取消才会起作用。如果任务仍在处理并准备打印,则取消不起作用,并且无论如何都会打印响应。更具体地说,即使单击按钮后,此函数......
  • 使用 np.array 索引过滤 Python 列表
    谁能向我解释一下列表self.data如何使用numpy索引数组selec_idx进行索引/过滤?完整的课程可在https://github.com/kaidic/LDAM-DRW/blob/master/imbalance_cifar.pydefgen_imbalanced_data(self,img_num_per_cls):new_data=[]n......
  • 尝试在cmd(python)中安装turtle
    当我在cmd中编写pipinstallturtle后,这条消息出现在我面前。有人知道该怎么办吗?C:\>pipinstallturtleCollectingturtleUsingcachedturtle-0.0.2.tar.gz(11kB)ERROR:Commanderroredoutwithexitstatus1:command:'C:\Users\Bruger\App......
  • Python + Polars:如何有效地“fill_null”仅 DataFrame 的某些列?
    例如,假设我只想fill_null(strategy="zero")DataFrame的数字列。我当前的策略是这样做:final_df=df.select(cs.exclude(cs.numeric()))final_df.with_columns(df.select(cs.numeric()).fill_null(strategy="zero"))是否有替代的、更惯用或更有效的方法来实现我......
  • 如何找到 Windows 上 Python 的安装位置?
    我想找出我的Python在Windows上的安装路径。例如:C:\Python25如何找到Python的安装位置?在Windows上查找Python安装位置的方法有很多种:1.使用where命令(推荐方法):打开命令提示符(cmd)。输入以下命令并按回车键:wherepython......