我的代码检测到的颜色不是我想要的颜色

问题描述 投票:0回答:1

我正在尝试为 Roblox 游戏制作一个 Python 机器人,每当白色条悬停在黄色条上时,你就按空格键。但是我在检测正确的颜色像素时遇到问题。每当我尝试检查 RGB 值为 255,255,0 的像素时,它都会得到除黄色以外的颜色,如浅绿色和白色。

import random
import cv2
import keyboard
import numpy as np

game_img = cv2.imread('test.png', cv2.IMREAD_UNCHANGED)
dodge_img = cv2.imread('dodge8.png', cv2.IMREAD_UNCHANGED)

print(type(game_img))
print(game_img.shape)

for y in range(0,game_img.shape[0]):
    for x in range(0,game_img.shape[1]):
        if np.any(game_img[y][x] == [255,255,0]):
            game_img[y][x] = [random.randint(0,255),random.randint(0,255),random.randint(0,255)]

cv2.imshow("this", game_img)
cv2.waitKey(0)

原图:

Original Image

“黄色”像素更改后的图像:

Image After

python numpy image-processing computer-vision game-automation
1个回答
0
投票

np.any(game_img[y][x] == [255,255,0])
如果蓝色分量为 255,或绿色分量为 254,或红色分量为黄色(OpenCV 默认使用 RGB 的 BGR 顺序),则为 true。

如果您想检测 BGR 中的纯黄色 (0,255,255),那么您需要确保所有三个颜色分量匹配,而不是任何一个分量匹配。条件应该是

np.all(game_img[y][x] == [0,255,255])

© www.soinside.com 2019 - 2024. All rights reserved.