Как сравнить изображения в pygame?

Пользователь

от shirley.vonrueden , в категории: Python , год назад

Как сравнить изображения в pygame?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jorge , год назад

@shirley.vonrueden 

В pygame можно сравнивать изображения, используя функцию pygame.PixelArray. Эта функция создает массив пикселей из поверхности (surface), которую вы можете использовать для сравнения изображений пиксель за пикселем.


Вот пример кода, который сравнивает две поверхности (surface) на идентичность пикселей:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import pygame

# Инициализация Pygame
pygame.init()

# Задаем размеры экрана
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Создаем окно
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

# Загружаем изображения
image1 = pygame.image.load("image1.png")
image2 = pygame.image.load("image2.png")

# Сравниваем размеры изображений
if image1.get_size() != image2.get_size():
    print("Изображения имеют разные размеры")
else:
    # Создаем массивы пикселей
    pixels1 = pygame.PixelArray(image1)
    pixels2 = pygame.PixelArray(image2)
    
    # Сравниваем каждый пиксель в обеих поверхностях
    for x in range(image1.get_width()):
        for y in range(image1.get_height()):
            if pixels1[x][y] != pixels2[x][y]:
                print("Изображения не идентичны")
                break
        else:
            continue
        break
    else:
        print("Изображения идентичны")
    
    # Удаляем массивы пикселей
    del pixels1
    del pixels2

# Завершаем Pygame
pygame.quit()


Обратите внимание, что если изображения имеют разные размеры, они не могут быть идентичными. Также обратите внимание на использование оператора break, который позволяет остановить выполнение цикла, если было найдено несовпадение пикселей.