我正在使用pyautogui
库,我想将屏幕快照保存在没有重复的列表中。该类型是Image
格式,使其无法散列。有什么办法可以解决这个问题,使我可以在图像上使用集?
我收到的错误消息是TypeError: unhashable type: 'Image'
。
import pyautogui
import time
import cv2
import numpy as np
import os
x = 1
pictures = []
check = []
while True:
image = pyautogui.screenshot("image" + str(x) + '.png')
check.append(image)
print(len(check) != len(set(check)))
x+=1
time.sleep(2)
答案 0 :(得分:0)
您可以使用hashlib
模块为图像创建哈希值,然后手动将每个哈希值添加到集合中。我没有安装pyautogui
,因此使用了PIL
模块,该模块还提供了获取屏幕截图的功能。
import hashlib
#import pyautogui
from PIL import ImageGrab
import time
x = 1
pictures = []
image_hashes = set() # Empty set.
for i in range(10): # Do a limited number for testing.
# image = pyautogui.screenshot()
image = ImageGrab.grab()
# Compute an image hash value.
h = hashlib.sha256()
h.update(image.tobytes())
image_hash = h.digest()
if image_hash not in image_hashes:
pictures.append(image)
image_hashes.add(image_hash)
# image.save("image" + str(x) + '.png') # Save image file.
x += 1
time.sleep(2)
print(len(pictures), 'unique images obtained')