2014-09-28 39 views
0

我使用Desktopmagichttps://pypi.python.org/pypi/Desktopmagic/14.3.11#downloads 用下面的代碼(由50像素50像素)的屏幕截圖使用Python採取小:Win7上的Python:匹配來自2個不同PC的屏幕截圖?

from desktopmagic.screengrab_win32 import (
    getDisplayRects, saveScreenToBmp, saveRectToBmp, getScreenAsImage, 
    getRectAsImage, getDisplaysAsImages) 

def snap_shot(left_offset, top_offset, width, height, file_name): 
    right=left_offset+width 
    bottom=top_offset+height 

    saveRectToBmp(file_name, rect=(left_offset, top_offset, right, bottom)) 

我也使用枕頭比較截圖給參考圖像

from PIL import Image 

def compare_images(f1,f2): 
    h1 = Image.open(f1).histogram() 
    h2 = Image.open(f2).histogram() 

    rms = math.sqrt(functools.reduce(operator.add,map(lambda a,b: (a-b)**2, h1, h2))/len(h1)) 

    return rms 

一切工作正常,直到我試圖將代碼和參考圖像遷移到新的PC。 對於人眼而言,在PC1上拍攝的截圖與在PC2上截取的截圖沒有區別,但我的compare_images函數看起來有所不同。

當查找PC1上拍攝的參考圖像和PC2上的屏幕截圖之間的精確匹配時,測試失敗。

那麼.... 2臺Windows電腦需要相同的渲染桌面窗口需要些什麼? 我假設他們是相同的硬件,屏幕截圖將匹配100%。但關鍵因素是什麼?雙方擁有相同的顯卡是否足夠?你認爲什麼因素可以發揮作用?

在此先感謝

回答

0

兩臺不同的機器可能有不同的操作系統版本(如果不是家庭)和他們的GUI元素(窗口,邊框,窗口,圖標,窗口 - TopFrameColouringScheme,桌面動機,光標圖標,壁紙 - 圖像/平鋪/比例因子等等)

如果只有顏色深度設置不同(對於所有其他方面相同/相同的設置),結果像素值彼此不匹配(主要不能)。這種情況可以用最簡單的方法檢查 - 只需比較f1f2文件中32位色彩深度的BMP文件ColourPALETTE內容與減小的16位色彩深度。