Note:
pyrealsense
AKApyrealsense/2.0
is a community supported Python wrapper for the legacy librealsense v1.12.1. This wrapper does not support newer versions and does not work with the RealSense SDK 2.0.HOWEVER: The
pyrealsense2
package is our official wrapper which does support SDK 2.0
We provide a PyPI distribution which is created from this folder by running python setup.py bdist_wheel
.
Package is available at https://pypi.python.org/pypi/pyrealsense2
To install the package, run:
pip install pyrealsense2
Windows users can install the RealSense SDK 2.0 from the release tab to get pre-compiled binaries of the wrapper, for both x86 and x64 architectures. (Python versions 3.6, 3.7, 3.8, 3.9, 3.10 are supported).
Note: Python 2.7 distributables can be found for pyrealsense2 versions <= 2.51.1
- Ensure apt-get is up to date
sudo apt-get update && sudo apt-get upgrade
- Note: Use
sudo apt-get dist-upgrade
, instead ofsudo apt-get upgrade
, in case you have an older Ubuntu 14.04 version
- Install Python and its development files via apt-get (Python 2 and 3 both work)
sudo apt-get install python python-dev
orsudo apt-get install python3 python3-dev
- Note: The project will only use Python 2 if it can't use Python 3
-
Run the top level CMake command with the following additional flag
-DBUILD_PYTHON_BINDINGS:bool=true
:-
Note: For building a self-contained (statically compiled) pyrealsense2 library add the CMake flag:
-DBUILD_SHARED_LIBS=false
-
mkdir build
cd build
cmake ../ -DBUILD_PYTHON_BINDINGS:bool=true
Note: To force compilation with a specific version on a system with both Python 2 and Python 3 installed, add the following flag to CMake command:
-DPYTHON_EXECUTABLE=[full path to the exact python executable]
make -j4
sudo make install
- update your PYTHONPATH environment variable to add the path to the pyrealsense library
export PYTHONPATH=$PYTHONPATH:/usr/local/lib
- Alternatively, copy the build output (
librealsense2.so
andpyrealsense2.so
) next to your script.
- Note: Python 3 module filenames may contain additional information, e.g.
pyrealsense2.cpython-35m-arm-linux-gnueabihf.so
)
-
Install Python 2 or 3 for windows. You can find the downloads on the official Python website here
-
When running
cmake-gui
, select theBUILD_PYTHON_BINDINGS
option-
Note: For building a self-contained (statically compiled) pyrealsense2 library add the CMake flag:
-DBUILD_SHARED_LIBS=false
-
-
If you have multiple python installations on your machine you can use:
-DPYTHON_EXECUTABLE=<path to python executable>
For example:-DPYTHON_EXECUTABLE=C:/Python27/python.exe
The precompiled binaries shipped with the installer assume Python 3.7. The error
ImportError: DLL load failed: The specified module could not be found
might indicate versions mismatch or architecture (x86 vs x64) mismatch.
- Open
librealsense2.sln
that was created in the previous step, and build thepyrealsense2
project - Open the output folder of the project (e.g
build\x64-Release\Release\
) and copypyrealsense2.pyd
into your python'ssite-packages
(e.gC:\Python27\Lib\site-packages
) - Alternatively, copy the build output (
realsense2.dll
andpyrealsense2.pyd
) next to your script.
For a list of full code examples see the examples folder
# First import the library
import pyrealsense2 as rs
# Create a context object. This object owns the handles to all connected realsense devices
pipeline = rs.pipeline()
pipeline.start()
try:
while True:
# Create a pipeline object. This object configures the streaming camera and owns it's handle
frames = pipeline.wait_for_frames()
depth = frames.get_depth_frame()
if not depth: continue
# Print a simple text-based representation of the image, by breaking it into 10x20 pixel regions and approximating the coverage of pixels within one meter
coverage = [0]*64
for y in range(480):
for x in range(640):
dist = depth.get_distance(x, y)
if 0 < dist and dist < 1:
coverage[x//10] += 1
if y%20 is 19:
line = ""
for c in coverage:
line += " .:nhBXWW"[c//25]
coverage = [0]*64
print(line)
finally:
pipeline.stop()
Librealsense frames support the buffer protocol. A numpy array can be constructed using this protocol with no data marshalling overhead:
import numpy as np
depth = frames.get_depth_frame()
depth_data = depth.as_frame().get_data()
np_image = np.asanyarray(depth_data)