43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
import ffmpeg
|
|
import numpy as np
|
|
from ultralytics import YOLO
|
|
import paho.mqtt.client as mqtt
|
|
from filterpy.kalman import UnscentedKalmanFilter as UKF
|
|
from filterpy.kalman import MerweScaledSigmaPoints
|
|
import time
|
|
|
|
width = 1280
|
|
height = 720
|
|
fps = 60
|
|
frameCount = 0
|
|
|
|
# Setup the ffmpeg stream
|
|
input_stream = ffmpeg.input('video="0":video_size={}x{}:framerate={}'.format(width, height, fps))
|
|
output_stream = ffmpeg.output(input_stream, 'pipe:1', format='rawvideo', pix_fmt='bgr24')
|
|
|
|
# Initialize the stream
|
|
process = ffmpeg.run_async(output_stream, pipe_stdout=True, pipe_stderr=True)
|
|
|
|
frameTime = time.time()
|
|
|
|
while True:
|
|
# Read a frame from the stream
|
|
in_bytes = process.stdout.read(width * height * 3)
|
|
if len(in_bytes) < width * height * 3:
|
|
break # End of stream
|
|
|
|
# Convert bytes to numpy array
|
|
frame = np.frombuffer(in_bytes, np.uint8).reshape([height, width, 3])
|
|
|
|
frameCount += 1
|
|
|
|
if (time.time() - frameTime) > 10:
|
|
trueFPS = frameCount / (time.time()-frameTime)
|
|
print(trueFPS)
|
|
break
|
|
|
|
# Close the process
|
|
process.stdout.close()
|
|
process.stderr.close()
|
|
process.wait()
|