From e37db4f5b15ddb1ad0ef67b81a46c10be3cf181b Mon Sep 17 00:00:00 2001 From: Matevz Morato Date: Tue, 5 Mar 2024 13:39:45 +0100 Subject: [PATCH 1/3] Improve the pointcloud example to work with 30FPS --- examples/PointCloud/visualize_pointcloud.py | 28 ++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/examples/PointCloud/visualize_pointcloud.py b/examples/PointCloud/visualize_pointcloud.py index 9af470369..75ab1f260 100644 --- a/examples/PointCloud/visualize_pointcloud.py +++ b/examples/PointCloud/visualize_pointcloud.py @@ -3,8 +3,23 @@ from time import sleep import numpy as np import cv2 +import time -FPS = 20 +FPS = 30 +class FPSCounter: + def __init__(self): + self.frame_count = 0 + self.fps = 0 + self.start_time = time.time() + + def tick(self): + self.frame_count += 1 + if self.frame_count % 10 == 0: + elapsed_time = time.time() - self.start_time + self.fps = self.frame_count / elapsed_time + self.frame_count = 0 + self.start_time = time.time() + return self.fps pipeline = dai.Pipeline() camRgb = pipeline.create(dai.node.ColorCamera) @@ -60,8 +75,11 @@ def key_callback(vis, action, mods): vis.create_window() vis.register_key_action_callback(81, key_callback) pcd = o3d.geometry.PointCloud() + coordinateFrame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=1000, origin=[0,0,0]) + vis.add_geometry(coordinateFrame) first = True + fpsCounter = FPSCounter() while isRunning: inMessage = q.get() inColor = inMessage["rgb"] @@ -69,12 +87,17 @@ def key_callback(vis, action, mods): cvColorFrame = inColor.getCvFrame() # Convert the frame to RGB cvRGBFrame = cv2.cvtColor(cvColorFrame, cv2.COLOR_BGR2RGB) + fps = fpsCounter.tick() + # Display the FPS on the frame + cv2.putText(cvColorFrame, f"FPS: {fps:.2f}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) cv2.imshow("color", cvColorFrame) key = cv2.waitKey(1) if key == ord('q'): break if inPointCloud: - pcd.points = o3d.utility.Vector3dVector(inPointCloud.getPoints()) + t_before = time.time() + points = inPointCloud.getPoints().astype(np.float64) + pcd.points = o3d.utility.Vector3dVector(points) colors = (cvRGBFrame.reshape(-1, 3) / 255.0).astype(np.float64) pcd.colors = o3d.utility.Vector3dVector(colors) if first: @@ -84,5 +107,4 @@ def key_callback(vis, action, mods): vis.update_geometry(pcd) vis.poll_events() vis.update_renderer() - sleep(0.01) vis.destroy_window() From b505473ed3d5b0118c8c6b973ea6859d3a702e95 Mon Sep 17 00:00:00 2001 From: Matevz Morato Date: Tue, 5 Mar 2024 13:47:54 +0100 Subject: [PATCH 2/3] Change the example to camel case for consistency --- examples/PointCloud/visualize_pointcloud.py | 22 ++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/PointCloud/visualize_pointcloud.py b/examples/PointCloud/visualize_pointcloud.py index 75ab1f260..c1258c2e2 100644 --- a/examples/PointCloud/visualize_pointcloud.py +++ b/examples/PointCloud/visualize_pointcloud.py @@ -5,20 +5,20 @@ import cv2 import time -FPS = 30 +FPS = 15 class FPSCounter: def __init__(self): - self.frame_count = 0 + self.frameCount = 0 self.fps = 0 - self.start_time = time.time() + self.startTime = time.time() def tick(self): - self.frame_count += 1 - if self.frame_count % 10 == 0: - elapsed_time = time.time() - self.start_time - self.fps = self.frame_count / elapsed_time - self.frame_count = 0 - self.start_time = time.time() + self.frameCount += 1 + if self.frameCount % 10 == 0: + elapsedTime = time.time() - self.startTime + self.fps = self.frameCount / elapsedTime + self.frameCount = 0 + self.startTime = time.time() return self.fps pipeline = dai.Pipeline() @@ -37,10 +37,10 @@ def tick(self): camRgb.setIspScale(1,3) camRgb.setFps(FPS) -monoLeft.setResolution(dai.MonoCameraProperties.SensorResolution.THE_400_P) +monoLeft.setResolution(dai.MonoCameraProperties.SensorResolution.THE_800_P) monoLeft.setCamera("left") monoLeft.setFps(FPS) -monoRight.setResolution(dai.MonoCameraProperties.SensorResolution.THE_400_P) +monoRight.setResolution(dai.MonoCameraProperties.SensorResolution.THE_800_P) monoRight.setCamera("right") monoRight.setFps(FPS) From 50e368313264a4cb1ab0429f0f837581f4a30219 Mon Sep 17 00:00:00 2001 From: Matevz Morato Date: Tue, 5 Mar 2024 13:50:45 +0100 Subject: [PATCH 3/3] Minor fixes --- .gitignore | 4 ++-- examples/PointCloud/visualize_pointcloud.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 98f9cb60a..590c7222e 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,7 @@ depthai-core/build/ # builds _builds/ - +.cache/ #git *.orig *_REMOTE_* @@ -44,4 +44,4 @@ env.bak/ venv.bak/ # PyCharm -.idea/ \ No newline at end of file +.idea/ diff --git a/examples/PointCloud/visualize_pointcloud.py b/examples/PointCloud/visualize_pointcloud.py index c1258c2e2..9aa804d2c 100644 --- a/examples/PointCloud/visualize_pointcloud.py +++ b/examples/PointCloud/visualize_pointcloud.py @@ -5,7 +5,7 @@ import cv2 import time -FPS = 15 +FPS = 30 class FPSCounter: def __init__(self): self.frameCount = 0 @@ -37,10 +37,10 @@ def tick(self): camRgb.setIspScale(1,3) camRgb.setFps(FPS) -monoLeft.setResolution(dai.MonoCameraProperties.SensorResolution.THE_800_P) +monoLeft.setResolution(dai.MonoCameraProperties.SensorResolution.THE_400_P) monoLeft.setCamera("left") monoLeft.setFps(FPS) -monoRight.setResolution(dai.MonoCameraProperties.SensorResolution.THE_800_P) +monoRight.setResolution(dai.MonoCameraProperties.SensorResolution.THE_400_P) monoRight.setCamera("right") monoRight.setFps(FPS)