Scripts test liveview : pygame, pyqt6, opencv, tkinter - mesure FPS et premiere image
This commit is contained in:
56
scripts/test_pygame.py
Normal file
56
scripts/test_pygame.py
Normal file
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Test liveview avec Pygame. Lance: python3 scripts/test_pygame.py"""
|
||||
import time
|
||||
import io
|
||||
import gphoto2 as gp
|
||||
import pygame
|
||||
|
||||
cam = gp.Camera()
|
||||
cam.init()
|
||||
print("Camera connectee")
|
||||
|
||||
pygame.init()
|
||||
screen = pygame.display.set_mode((960, 640))
|
||||
pygame.display.set_caption("Test liveview Pygame")
|
||||
clock = pygame.time.Clock()
|
||||
font = pygame.font.SysFont(None, 36)
|
||||
|
||||
t_start = time.time()
|
||||
frame_count = 0
|
||||
premier_frame = None
|
||||
|
||||
running = True
|
||||
while running:
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE):
|
||||
running = False
|
||||
|
||||
try:
|
||||
t0 = time.time()
|
||||
f = cam.capture_preview()
|
||||
data = bytes(f.get_data_and_size())
|
||||
dt = time.time() - t0
|
||||
|
||||
if premier_frame is None:
|
||||
premier_frame = time.time() - t_start
|
||||
print(f"1ere image en : {premier_frame:.2f}s")
|
||||
|
||||
img_surface = pygame.image.load(io.BytesIO(data))
|
||||
img_surface = pygame.transform.scale(img_surface, (960, 640))
|
||||
screen.blit(img_surface, (0, 0))
|
||||
|
||||
frame_count += 1
|
||||
fps = frame_count / (time.time() - t_start)
|
||||
txt = font.render(f"FPS: {fps:.1f} frame: {dt*1000:.0f}ms", True, (255, 255, 0))
|
||||
screen.blit(txt, (10, 10))
|
||||
pygame.display.flip()
|
||||
|
||||
except Exception as e:
|
||||
print(f"Erreur: {e}")
|
||||
break
|
||||
|
||||
clock.tick(30)
|
||||
|
||||
cam.exit()
|
||||
pygame.quit()
|
||||
print(f"Total frames: {frame_count}, FPS moyen: {frame_count/(time.time()-t_start):.1f}")
|
||||
Reference in New Issue
Block a user