我正在尝试为 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)
原图:
“黄色”像素更改后的图像:
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])