Python枕头中的Python Pillow图像质量不同

时间:2016-01-09 10:11:25

标签: python ubuntu image-processing selenium-webdriver pillow

我有一个机器人玩一个由硒驱动的在线游戏。它通过利用图像识别(查找子图像)来工作。在Windows中,我的机器人工作正常;但是,我的机器人在Ubuntu中不起作用。

机器人的工作原理如下:

  1. 获取selenium中元素的屏幕截图
  2. 使用枕头加载屏幕截图
  3. 在较大的屏幕截图中找到子图像(本地图像)
  4. 我已经将问题追溯到我用来查找子图像的函数。它不起作用,因为截图图像质量在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?

1 个答案:

答案 0 :(得分:1)

不同的浏览器(可能是操作系统/窗口管理器)以不同的方式实现颜色渲染 - 因此显示的像素值可能具有不同的R,G,B值强度,这些值对人眼是不可见的,但这使得跨平台像素比较浏览器/平台之间的屏幕截图无效。