我有一个使用selenium驱动的在线游戏机器人,它通过图像识别(查找子图像)来工作。在Windows中,我的机器人可以正常运行;但是,在Ubuntu中,我的机器人无法工作。
机器人的工作方式如下:
1. 捕获selenium中的元素屏幕截图 2. 使用pillow加载屏幕截图 3. 在大屏幕截图中查找子图像(本地图像)
我已经追踪到问题出现在用于查找子图像的函数上。这是因为Ubuntu上的屏幕截图图像质量不同,无法进行逐像素匹配。
在Windows上工作的针和草堆图像集在Ubuntu上也能正常工作,反之亦然——从Ubuntu创建的不起作用的针和草堆图像集在Windows和Ubuntu上都无法工作。
我的屏幕截图在Windows中始终为~6KB,在Ubuntu中为~5KB。
当我在PIL中打开并保存本地的“针”图像时,它的大小从1.7KB变为1.5KB,结果无法使用。这是代码的非500行版本:
机器人的工作方式如下:
1. 捕获selenium中的元素屏幕截图 2. 使用pillow加载屏幕截图 3. 在大屏幕截图中查找子图像(本地图像)
我已经追踪到问题出现在用于查找子图像的函数上。这是因为Ubuntu上的屏幕截图图像质量不同,无法进行逐像素匹配。
在Windows上工作的针和草堆图像集在Ubuntu上也能正常工作,反之亦然——从Ubuntu创建的不起作用的针和草堆图像集在Windows和Ubuntu上都无法工作。
我的屏幕截图在Windows中始终为~6KB,在Ubuntu中为~5KB。
当我在PIL中打开并保存本地的“针”图像时,它的大小从1.7KB变为1.5KB,结果无法使用。这是代码的非500行版本:
# imports and everything else here..
browser.save_screenshot("haystack.png") # selenium screenshot
haystack = Image.open("haystack.png")
needle = Image.open("needle.png") # the needle is a local file
haystack.save("haystack_new.png","PNG",quality=100) # DEBUGGING
needle.save("needle_new.png","PNG",quality=100) # DEBUGGING
# call "needle in a haystack" locator function here
有人能告诉我出了什么问题吗?为什么Linux的截图质量较低?我应该安装不同版本的zlib还是直接使用opencv?