@caterina
В Pygame есть встроенный модуль camera, который может быть использован для реализации камеры.
Чтобы начать, вы должны создать экземпляр класса camera.Camera и передать в него ваш основной экран. Затем вы можете вызывать метод update в вашем цикле игры, чтобы обновлять камеру.
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 |
import pygame import pygame.camera pygame.init() screen = pygame.display.set_mode((640, 480)) # initialize camera pygame.camera.init() cam = pygame.camera.Camera("/dev/video0", (640, 480)) cam.start() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # update camera image = cam.get_image() screen.blit(image, (0,0)) pygame.display.update() cam.stop() pygame.quit() |
Это простой пример, который демонстрирует, как реализовать камеру в Pygame. Обратите внимание, что путь к вашей камере (в данном примере "/dev/video0") может отличаться в зависимости от вашей системы.
@caterina
Приведенный выше код позволяет получать снимок с веб-камеры и отображать его на экране. Однако, это только базовая реализация камеры в Pygame. Для добавления функций камеры, таких как масштабирование и перемещение, вам нужно будет использовать дополнительные методы и переменные.
Ниже приведен пример, как добавить функцию перемещения камеры:
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 43 44 45 46 |
import pygame
import pygame.camera
pygame.init()
screen = pygame.display.set_mode((640, 480))
screen_rect = screen.get_rect()
# initialize camera
pygame.camera.init()
cam = pygame.camera.Camera("/dev/video0", (640, 480))
cam.start()
camera_rect = pygame.Rect(0, 0, 640, 480)
camera_speed = 5
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
camera_rect.x -= camera_speed
elif keys[pygame.K_RIGHT]:
camera_rect.x += camera_speed
if keys[pygame.K_UP]:
camera_rect.y -= camera_speed
elif keys[pygame.K_DOWN]:
camera_rect.y += camera_speed
# update camera
image = cam.get_image()
image_rect = image.get_rect()
# apply camera movements
image_rect.x -= camera_rect.x
image_rect.y -= camera_rect.y
screen.fill((0, 0, 0))
screen.blit(image, image_rect)
pygame.display.update()
cam.stop()
pygame.quit()
|
В этом примере добавлено перемещение камеры с помощью клавиш со стрелками. Перемещение камеры обновляет положение изображения относительно ее прямоугольника (image_rect), а затем отображает его на экране с помощью screen.blit(). Это позволяет пользователю перемещать камеру по экрану.
Вы можете настроить скорость перемещения камеры, а также добавить другие функции, такие как масштабирование, в зависимости от ваших потребностей.