From f2342d04b5d26fb2439881d852d431d02edb08bd Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Mon, 15 Jul 2024 11:54:14 +0200 Subject: [PATCH] improved stability of FPS display --- ocv_rpicam.py | 20 +++++++++----------- settings.json | 6 +++--- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/ocv_rpicam.py b/ocv_rpicam.py index 01f78d5..5c117c5 100755 --- a/ocv_rpicam.py +++ b/ocv_rpicam.py @@ -38,7 +38,7 @@ picam2 = Picamera2() pprint(picam2.sensor_modes) settings = {'NoiseReductionMode': 0, 'AeExposureMode': 0, 'ExposureTime': 10000, 'AnalogueGain': 1, 'FrameRate': picam2.sensor_modes[0]['fps']} caps = {"FrameRate": (1, picam2.sensor_modes[0]['fps'], None)} -timer = None +fps = 0 def load_settings(): @@ -78,16 +78,10 @@ def get_value(item: str): return picam2.camera_controls[item] def process(request): - global timer - fps = 0 + global fps timestamp = time.strftime("%Y-%m-%d %X") - # Calculate Frames per second (FPS) - if timer is not None: - fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer) - - with MappedArray(request, "main") as m: # Display timestamp on frame cv2.putText(m.array, timestamp, (0, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) @@ -95,8 +89,6 @@ def process(request): # Display FPS on frame cv2.putText(m.array, "FPS : " + str(int(fps)), (20, m.array.shape[0] - 20), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 240, 0), 2) - # Start timer - timer = cv2.getTickCount() if __name__ == '__main__': for item in items: @@ -126,6 +118,9 @@ if __name__ == '__main__': picam2.start() while True: + # Start timer + timer = cv2.getTickCount() + rgb = picam2.capture_array("main") frame = cv2.cvtColor(rgb, cv2.COLOR_RGB2BGR) @@ -193,7 +188,10 @@ if __name__ == '__main__': fps = set_value('FrameRate', fps) print(f"FPS: {fps}") - + # Calculate Frames per second (FPS) + fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer) + + # Release the capture and close windows save_settings(settings) cv2.destroyAllWindows() diff --git a/settings.json b/settings.json index 0abe1bc..cd1b672 100755 --- a/settings.json +++ b/settings.json @@ -1,7 +1,7 @@ { "NoiseReductionMode": 0, "AeExposureMode": 0, -"ExposureTime": 12829, -"AnalogueGain": 5.0, -"FrameRate": 10.380000000000003 +"ExposureTime": 13929, +"AnalogueGain": 1.0, +"FrameRate": 60.38 } \ No newline at end of file