GeislingerProject/vaapitest.py
2024-10-25 09:39:21 +02:00

44 lines
1.1 KiB
Python

import cv2
import numpy as np
import subprocess
# Define the FFmpeg command to read from the camera
ffmpeg_command = [
'ffmpeg',
'-f', 'v4l2', # Input format
'-i', '/dev/video0', # Camera device
'-f', 'rawvideo', # Output format
'-pix_fmt', 'bgr24', # Pixel format
'-an', # Disable audio
'-sn', # Disable subtitles
'-'
]
# Start the FFmpeg process
process = subprocess.Popen(ffmpeg_command, stdout=subprocess.PIPE, bufsize=10**8)
# Set the width and height for the camera resolution
width = 1920
height = 1080
while True:
# Read a frame from the FFmpeg output
raw_frame = process.stdout.read(width * height * 3) # 3 bytes per pixel for BGR
if not raw_frame:
break # Exit the loop if no more frames
# Convert the byte data to a numpy array and reshape it to an image
frame = np.frombuffer(raw_frame, np.uint8).reshape((height, width, 3))
# Display the frame using OpenCV
cv2.imshow('Camera Stream', frame)
# Break the loop on 'q' key press
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Clean up
process.stdout.close()
process.wait()
cv2.destroyAllWindows()