不能将集合与图像类型一起使用?

2024-04-24 07:33:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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)

Tags: 图像imageimport消息类型列表len屏幕
1条回答
网友
1楼 · 发布于 2024-04-24 07:33:40

您可以使用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')

相关问题 更多 >