Files
yutang cf8df17d3a
Some checks failed
Secret Leaks / trufflehog (push) Has been cancelled
add realman shadow src
2025-06-07 11:29:43 +08:00

153 lines
4.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import cv2
import time
import numpy as np
from os import path
import pyrealsense2 as rs
from shadow_camera import realsense
import logging
def test_camera():
camera = realsense.RealSenseCamera('241122071186')
camera.start_camera()
while True:
# result = camera.read_align_frame()
# if result is None:
# print('is None')
# continue
# start_time = time.time()
color_image, depth_image, colorized_depth, vtx = camera.read_frame()
color_image = cv2.cvtColor(color_image, cv2.COLOR_RGB2BGR)
print(f"color_image: {color_image.shape}")
# print(f"Time: {end_time - start_time}")
cv2.imshow("bgr_image", color_image)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
camera.stop_camera()
def test_get_serial_num():
camera = realsense.RealSenseCamera()
device = camera.get_serial_num()
class CameraCapture:
def __init__(self, camera_serial_num=None, save_dir="./save"):
self._camera_serial_num = camera_serial_num
self._color_save_dir = path.join(save_dir, "color")
self._depth_save_dir = path.join(save_dir, "depth")
os.makedirs(save_dir, exist_ok=True)
os.makedirs(self._color_save_dir, exist_ok=True)
os.makedirs(self._depth_save_dir, exist_ok=True)
def get_serial_num(self):
self._camera_serial_num = {}
camera_names = ["left", "right", "head", "table"]
context = rs.context()
devices = context.query_devices() # 获取所有设备
if len(context.devices) > 0:
for i, device in enumerate(devices):
self._camera_serial_num[camera_names[i]] = device.get_info(
rs.camera_info.serial_number
)
print(self._camera_serial_num)
return self._camera_serial_num
def start_camera(self):
if self._camera_serial_num is None:
self.get_serial_num()
self._camera_left = realsense.RealSenseCamera(self._camera_serial_num["left"])
self._camera_right = realsense.RealSenseCamera(self._camera_serial_num["right"])
self._camera_head = realsense.RealSenseCamera(self._camera_serial_num["head"])
self._camera_left.start_camera()
self._camera_right.start_camera()
self._camera_head.start_camera()
def stop_camera(self):
self._camera_left.stop_camera()
self._camera_right.stop_camera()
self._camera_head.stop_camera()
def _save_datas(self, timestamp, color_image, depth_image, camera_name):
color_filename = path.join(
self._color_save_dir, f"{timestamp}" + camera_name + ".jpg"
)
depth_filename = path.join(
self._depth_save_dir, f"{timestamp}" + camera_name + ".png"
)
cv2.imwrite(color_filename, color_image)
cv2.imwrite(depth_filename, depth_image)
def capture_images(self):
while True:
(
color_image_left,
depth_image_left,
_,
_,
) = self._camera_left.read_align_frame()
(
color_image_right,
depth_image_right,
_,
_,
) = self._camera_right.read_align_frame()
(
color_image_head,
depth_image_head,
_,
point_cloud3,
) = self._camera_head.read_align_frame()
bgr_color_image_left = cv2.cvtColor(color_image_left, cv2.COLOR_RGB2BGR)
bgr_color_image_right = cv2.cvtColor(color_image_right, cv2.COLOR_RGB2BGR)
bgr_color_image_head = cv2.cvtColor(color_image_head, cv2.COLOR_RGB2BGR)
timestamp = time.time() * 1000
cv2.imshow("Camera left", bgr_color_image_left)
cv2.imshow("Camera right", bgr_color_image_right)
cv2.imshow("Camera head", bgr_color_image_head)
# self._save_datas(
# timestamp, bgr_color_image_left, depth_image_left, "left"
# )
# self._save_datas(
# timestamp, bgr_color_image_right, depth_image_right, "right"
# )
# self._save_datas(
# timestamp, bgr_color_image_head, depth_image_head, "head"
# )
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cv2.destroyAllWindows()
if __name__ == "__main__":
#test_camera()
test_get_serial_num()
"""
输入相机序列号制定左右相机:
dict{'left': '241222075132', 'right': '242322076532', 'head': '242322076532'}
保存路径:
str./save
输入为空,自动分配相机序列号(不指定左、右、头部),保存路径为./save
"""
# capture = CameraCapture()
# capture.get_serial_num()
# test_get_serial_num()
# capture.start_camera()
# capture.capture_images()
# capture.stop_camera()