旭日X3派的d435i驱动需要自己编译一下,或者拿别人编译好的头文件和库文件(例如在旭日X3派开发板上使用Intel Realsense深度相机_地平线x3派适配realsense-CSDN博客)
下载好后,创建几个软连接就可以
①头文件、库文件、bin文件配置。文件夹lib、include和bin的内容都要放在/usr/local文件夹下,假设,这些文件的下载根目录为downpath,则具体操作如下(建议移动前check下路径):
## 复制文件
sudo cp -r downpath/bin/* /usr/local/bin/
sudo cp -r downpath/include/* /usr/local/include/
sudo cp -r downpath/lib/* /usr/local/lib/
## 创建库的软链接
sudo ln -s /usr/local/lib/librealsense2-gl-so.2.50.0 /usr/local/lib/librealsense2-gl.so.2.50
sudo ln -s /usr/local/lib/librealsense2-gl-so.2.50 /usr/local/lib/librealsense2-gl.so
sudo ln -s /usr/local/lib/librealsense2.so.2.50.0 /usr/local/lib/librealsense2.so.2.50
sudo ln -s /usr/local/lib/librealsense2.so.2.50 /usr/local/lib/librealsense2.so② Python包配置。文件夹python3的内容注意要放在/usr/lib/python3/dist-packages/里面(建议移动前check下路径)。然后建立xxx.so.2.50和xxx.so软连接到xxx.so.2.50.0
## 复制文件
sudo cp -r downpath/python3/dist-packages/pyrealsense2 /usr/lib/python3/dist-packages/
## 创建库的软链接
sudo ln -s /usr/lib/python3/dist-packages/pyrealsense2/pybackend2.cpython-38-aarch64-linux-gnu.so.2.50.0 /usr/lib/python3/dist-packages/pyrea lsense2/pybackend2cpython-38-aarch64-linux-gnu.so.2.50
sudo ln -s /usr/lib/python3/dist-packages/pyrealsense2/pybackend2.cpython-38-aarch64-linux-gnu.so.2.50 /usr/lib/python3/dist-packages/pyrea lsense2/pybackend2cpython-38-aarch64-linux-gnu.so
sudo ln -s /usr/lib/python3/dist-packages/pyrealsense2/pyrealsense2.cpython-38-aarch64-linux-gnu.so.2.50.0 /usr/lib/python3/dist-packages/pyrealsense2.cpython-38-aarch64-linux-gnu.so.2.50
sudo ln -s /usr/lib/python3/dist-packages/pyrealsense2/pyrealsense2.cpython-38-aarch64-linux-gnu.so.2.50 /usr/lib/python3/dist-packages/pyrealsense2.cpython-38-aarch64-linux-gnu.so
③ rules文件配置。 测试中发现部分文件需要rules文件支持,系统中有两个放置rules文件的地方,安全起见,在文件夹/usr/lib/udev/rules.d/和文件夹/usr/lib/udev/rules.d/下都存一份99-realsense-libusb.rules文件。
④最后,需要使用 sudo ldconfig 刷新一下,就可以用了
import cv2
import numpy as np
import time
import pyrealsense2.pyrealsense2 as rs
pipeline = rs.pipeline()
config = rs.config()
## 这里根据前面sudo rs-enumerate-devices的输出进行配置
config.enable_stream(rs.stream.depth, 1024, 768, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 1920, 1080, rs.format.rgb8, 30)
align_to = rs.stream.color
alignedFs = rs.align(align_to)
profile = pipeline.start(config)
#######################################
## 下面是获取内参的方式
frames = pipeline.wait_for_frames()
depth = frames.get_depth_frame()
color = frames.get_color_frame()
# 获取内参
depth_profile = depth.get_profile()
print('depth_profile:', depth_profile)
# <pyrealsense2.video_stream_profile: 1(0) 640x480 @ 30fps 1>
print(type(depth_profile))
# <class 'pyrealsense2.pyrealsense2.stream_profile'>
print('fps:', depth_profile.fps())
# 30
print(depth_profile.stream_type())
# stream.depth
print('', depth_profile.unique_id)
# <bound method PyCapsule.unique_id of <pyrealsense2.video_stream_profile: 1(0) 640x480 @ 30fps 1>>
color_profile = color.get_profile()
print(depth_profile.fps())
print(depth_profile.stream_index())
color_intrin = cvsprofile.get_intrinsics()
print(color_intrin)
# width: 640, height: 480, ppx: 318.482, ppy: 241.167, fx: 616.591, fy: 616.765, model: 2, coeffs: [0, 0, 0, 0, 0]
depth_intrin = dvsprofile.get_intrinsics()
print(depth_intrin)
extrin = depth_profile.get_extrinsics_to(color_profile)
print(extrin)
depth_sensor = profile.get_device().first_depth_sensor()
depth_scale = depth_sensor.get_depth_scale()
print('depth scale: ', depth_scale)
####################
# 视频流展示
im_show = ImageShow()
while True:
# 获取图片帧
frameset = pipeline.wait_for_frames()
aligned_frames = alignedFs.process(frameset)
color_frame = aligned_frames.get_color_frame()
depth_frame = aligned_frames.get_depth_frame()
if not depth_frame or not color_frame:
continue
depth_img = np.asanyarray(depth_frame.get_data())
color_img = np.asanyarray(color_frame.get_data())
color_img = cv2.cvtColor(color_img, cv2.COLOR_RGB2BGR)
depth_bgr = cv2.applyColorMap(cv2.convertScaleAbs(depth_img, alpha=0.03), cv2.COLORMAP_JET)
show_img = np.hstack([color_img, depth_bgr])
im_show.show(show_img)
im_show.close()