Image processing 彩色探测机器人

Image processing 彩色探测机器人,image-processing,macros,pixel,bots,Image Processing,Macros,Pixel,Bots,我想创建一个脚本,自动点击游戏中的移动目标 要做到这一点,我想检查屏幕上的颜色,以确定我的目标在哪里,然后单击他,如果他移动,重复这个 我不擅长编程,下面我提出的解决方案可能更简单: 1/将屏幕分成相等的分幅-分幅大小应代表游戏中的对象 2/循环每个瓷砖的每个像素,并创建像素颜色的直方图 3/如果最常见的记录颜色与我们需要的颜色匹配,我们可能会有正确的瓷砖。保存坐标并单击对象以完成任务 4/每0.5秒检查一次颜色,以确定对象是否移动,如果没有,则继续单击,如果有,重复步骤1、2和3 我不确定技术

我想创建一个脚本,自动点击游戏中的移动目标

要做到这一点,我想检查屏幕上的颜色,以确定我的目标在哪里,然后单击他,如果他移动,重复这个

我不擅长编程,下面我提出的解决方案可能更简单:

1/将屏幕分成相等的分幅-分幅大小应代表游戏中的对象

2/循环每个瓷砖的每个像素,并创建像素颜色的直方图

3/如果最常见的记录颜色与我们需要的颜色匹配,我们可能会有正确的瓷砖。保存坐标并单击对象以完成任务

4/每0.5秒检查一次颜色,以确定对象是否移动,如果没有,则继续单击,如果有,重复步骤1、2和3

我不确定技术上如何做的步骤是步骤1。我需要什么样的数据结构来制作磁贴?二维阵列就足够了吗?将每种颜色的值存储在此数组中,然后确定它是否为对象。同样在pseudo中,我如何将屏幕分割为要搜索的分块?瓷砖问题是我的主要问题

为rayryeng 2编辑:

我将使用Python完成这项任务。这不是我的游戏,我只是想创建一个宏来自动执行游戏中的任务。我还没有代码,我正在寻找更多的想法背后使这项工作比实际的代码

第三次编辑和最终代码:

#!/usr/bin/python

import win32gui, win32api

#function to take in coords and return colour

def colour_return(x,y):
    colours = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), x,y)
    return colours

def click(x,y):
    win32api.SetCursorPos((x,y))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)

#variable declaration
x = 1
y = 1 
pixel_value = []
colour_found = 0

while x < 1600:
    pixel_value = colour_return(x,y)
    if pixel_value == 1844766:
        click(x,y)
    x=x+1
    #print x
    print y
    if x == 1600:
        y=y+1
        x=1
        #print tile
        pixel_value = 0
#/usr/bin/python
导入win32gui、win32api
#函数接收坐标并返回颜色
def颜色返回(x,y):
colors=win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()),x,y)
返回颜色
def单击(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_事件(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_事件(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
#变量声明
x=1
y=1
像素_值=[]
找到的颜色=0
当x<1600时:
像素值=颜色返回(x,y)
如果像素_值==1844766:
单击(x,y)
x=x+1
#打印x
打印y
如果x==1600:
y=y+1
x=1
#印花瓷砖
像素值=0

这是我制作的最后一段代码。它可以工作,但速度非常慢。搜索y=1的所有1600像素需要30秒。我想是我的方法不起作用。我现在不再使用直方图和瓷砖,而是搜索颜色,并在匹配时单击坐标。在整个屏幕上搜索某种颜色时,最快的方法是什么?我见过一些颜色检测机器人,它们能够在每一秒都跟上一个移动的角色。

您还没有提供用于执行此操作的语言/范例。还有,到目前为止你们有什么?您是否已经设置了一些功能,这是您在游戏中调用的功能?如果您最终希望将每个瓷砖表示为直方图,只需将其设置为1D颜色数组即可。然而,你必须计算出你需要多少量化来计算出你想要多少颜色,因为做一个颜色直方图有点难处理。如何计算颜色直方图之间的相似性?使用灰度更直观。