我目前正在研究图像识别,我的目标是从手机游戏的棋盘上获取如下所示的所有信息:
正如你所看到的,有 5 个不同的骰子,它们的等级可以在 1 到 7 之间。
我知道人工智能识别可以解决这个问题,但我认为这可能太多了。 我的另一个想法是平均制作 20 帧,这样射弹就会被擦除(不太确定)
我想从董事会获取所有信息。 这将是一个 5*3 数组,每个位置都有骰子类型和级别
我尝试使用 pyautogui 在屏幕上查看骰子的每种可能出现的情况,但遇到了两个问题:
我在板的左上角位置做了所有测试:
def computeBoard():
saw = False
for dice in dicesList:
try:
if pyautogui.locateOnScreen(dice, region=(940, 580, 65, 65), confidence=0.90) is not None:
print("I can see " + dice)
saw = True
break
except pyautogui.ImageNotFoundException:
pass
if saw == False:
print("I can't see any dice")
降低容差有助于检测,但程序将不同级别混淆在一起。
(dicesList 只是所有图像路径的列表)
我还选择了 python,因为我在 youtube 上看到的教程中使用了它,但如果需要,我可以毫无问题地切换。
我的问题有解决办法吗?
提前致谢:)
我的另一个想法是平均制作 20 帧,这样射弹就会被擦除......
我的问题有解决办法吗?
是的,绝对可以,您可以轻松地“擦除”移动的物体。
但比起平均,更喜欢 中位数。 平均会留下微弱的投射物幽灵痕迹。 中位 OTOH 是一项稳健的统计数据,可以完全 丢弃此类异常值。