OBS: there is no plan to support librealsense 2.x, as Intel already provides the Python binding through pyrealsense2.
install librealsense and run the examples.
install the dependencies: pyrealsense uses pycparser for extracting necessary enums and structures definitions from the librealsense API, Cython for wrapping the inlined functions in the librealsense API, and Numpy for generic data shuffling.
Windows specifics: set the environment variable PYRS_INCLUDES to the
rs.h directory location and the environment variable PYRS_LIBS to the librealsense binary location. You might also need to have
stdint.h available in your path.
from PyPI - (OBS: not always the latest):
pip install pyrealsense
python setup.py install
## setup logging import logging logging.basicConfig(level = logging.INFO) ## import the package import pyrealsense as pyrs ## start the service - also available as context manager serv = pyrs.Service() ## create a device from device id and streams of interest cam = serv.Device(device_id = 0, streams = [pyrs.stream.ColorStream(fps = 60)]) ## retrieve 60 frames of data for _ in range(60): cam.wait_for_frames() print(cam.color) ## stop camera and service cam.stop() serv.stop()
The server for Realsense devices is started with
pyrs.Service() which will printout the number of devices available. It can also be started as a context with
Different devices can be created from the service
Device factory. They are created as their own class defined by device id, name, serial, firmware as well as enabled streams and camera presets. The default behaviour create a device with
id = 0 and setup the color, depth, pointcloud, color_aligned_depth, depth_aligned_color and infrared streams.
The available streams are either native or synthetic, and each one will create a property that exposes the current content of the frame buffer in the form of
<stream_name> is color, depth, points, cad, dac or infrared. To get access to new data,
Device.wait_for_frames has to be called once per frame.
## with connected device cam from pyrealsense import offline offline.save_depth_intrinsics(cam)
## previous device cam now offline from pyrealsense import offline offline.load_depth_intrinsics('610205001689') # camera serial number d = np.linspace(0, 1000, 480*640, dtype=np.uint16) pc = offline.deproject_depth(d)
offline can store the rs_intrinsics and depth_scale of a device to disk by default in the user's home directory in the file
.pyrealsense. This can later be loaded and used to deproject depth data into pointcloud, which is useful to store raw video file and save some disk memory.
To this point, this wrapper has been tested with:
The offline module only supports a single camera.
Contributions are always welcome. Make sure to push to the
This project has been developed as part of the E.U. Horizon 2020 research and innovation project Moregrasp (award number 643955).