Spaces:
Running
Running
# Copyright 2024 The HuggingFace Inc. team. All rights reserved. | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
import enum | |
import numpy as np | |
class stream(enum.Enum): # noqa: N801 | |
color = 0 | |
depth = 1 | |
class format(enum.Enum): # noqa: N801 | |
rgb8 = 0 | |
z16 = 1 | |
class config: # noqa: N801 | |
def enable_device(self, device_id: str): | |
self.device_enabled = device_id | |
def enable_stream(self, stream_type: stream, width=None, height=None, color_format=None, fps=None): | |
self.stream_type = stream_type | |
# Overwrite default values when possible | |
self.width = 848 if width is None else width | |
self.height = 480 if height is None else height | |
self.color_format = format.rgb8 if color_format is None else color_format | |
self.fps = 30 if fps is None else fps | |
class RSColorProfile: | |
def __init__(self, config): | |
self.config = config | |
def fps(self): | |
return self.config.fps | |
def width(self): | |
return self.config.width | |
def height(self): | |
return self.config.height | |
class RSColorStream: | |
def __init__(self, config): | |
self.config = config | |
def as_video_stream_profile(self): | |
return RSColorProfile(self.config) | |
class RSProfile: | |
def __init__(self, config): | |
self.config = config | |
def get_stream(self, color_format): | |
del color_format # unused | |
return RSColorStream(self.config) | |
class pipeline: # noqa: N801 | |
def __init__(self): | |
self.started = False | |
self.config = None | |
def start(self, config): | |
self.started = True | |
self.config = config | |
return RSProfile(self.config) | |
def stop(self): | |
if not self.started: | |
raise RuntimeError("You need to start the camera before stop.") | |
self.started = False | |
self.config = None | |
def wait_for_frames(self, timeout_ms=50000): | |
del timeout_ms # unused | |
return RSFrames(self.config) | |
class RSFrames: | |
def __init__(self, config): | |
self.config = config | |
def get_color_frame(self): | |
return RSColorFrame(self.config) | |
def get_depth_frame(self): | |
return RSDepthFrame(self.config) | |
class RSColorFrame: | |
def __init__(self, config): | |
self.config = config | |
def get_data(self): | |
data = np.ones((self.config.height, self.config.width, 3), dtype=np.uint8) | |
# Create a difference between rgb and bgr | |
data[:, :, 0] = 2 | |
return data | |
class RSDepthFrame: | |
def __init__(self, config): | |
self.config = config | |
def get_data(self): | |
return np.ones((self.config.height, self.config.width), dtype=np.uint16) | |
class RSDevice: | |
def __init__(self): | |
pass | |
def get_info(self, camera_info) -> str: | |
del camera_info # unused | |
# return fake serial number | |
return "123456789" | |
class context: # noqa: N801 | |
def __init__(self): | |
pass | |
def query_devices(self): | |
return [RSDevice()] | |
class camera_info: # noqa: N801 | |
# fake name | |
name = "Intel RealSense D435I" | |
def __init__(self, serial_number): | |
del serial_number | |
pass | |