命令:~$ rs-sensor-control
======================================================
Found the following devices:
0 : Intel RealSense D435 #817612070563
然后选择 0
Select a device by index: 0
Device information:
Name : Intel RealSense D435
Serial Number : 817612070563
Firmware Version : 05.10.06.00
Recommended Firmware Version : 05.10.03.00
Physical Port : /sys/devices/pci0000:00/0000:00:14.0/usb2/2-8/2-8:1.0/video4linux/video0
Debug Op Code : 15
Advanced Mode : YES
Product Id : 0B07
Camera Locked : N/A
Usb Type Descriptor : 3.2
======================================================
Device consists of 2 sensors:
0 : Stereo Module
1 : RGB Camera
Select a sensor by index:
然后比如选择1
Select a sensor by index: 1
======================================================
What would you like to do with the sensor?
0 : Control sensor's options
1 : Control sensor's streams
2 : Show stream intrinsics
3 : Display extrinsics
Select an action:
注意第二项,这个就是内参的内容了。选择2
======================================================
Sensor consists of 1 streams:
- Color #0
Sensor provides the following stream profiles:
0 : Color #0 (Video Stream: RGB8 1920x1080@ 30Hz)
1 : Color #0 (Video Stream: RAW16 1920x1080@ 30Hz)
2 : Color #0 (Video Stream: Y16 1920x1080@ 30Hz)
3 : Color #0 (Video Stream: BGRA8 1920x1080@ 30Hz)
4 : Color #0 (Video Stream: RGBA8 1920x1080@ 30Hz)
5 : Color #0 (Video Stream: BGR8 1920x1080@ 30Hz)
6 : Color #0 (Video Stream: YUYV 1920x1080@ 30Hz)
... ...
Please select the desired streaming profile:
所有流都在这里了,比如,选择0
Please select the desired streaming profile: 0
Principal Point : 966.617, 532.934
Focal Length : 1395.12, 1395.28
Distortion Model : Brown Conrady
Distortion Coefficients : [0,0,0,0,0]
相机的内参矩阵是
K = fx s x0
0 fy y0
0 0 1
fx,fy为焦距,一般情况下,二者相等。
x0,y0为主坐标(相对于成像平面)。
s为坐标轴倾斜参数,理想情况下为0。
python pipeline
import pyrealsense2 as rs
pipeline = rs.pipeline()
config = rs.config()
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 640, 480, rs.format.rgb8, 30)
pipeline.start(config)
time.sleep(1)
frames = pipeline.wait_for_frames()
# time.sleep(3)
depth_frame = frames.get_depth_frame()
color_frame = frames.get_color_frame()
# Convert images to numpy arrays
depth_image = np.asanyarray(depth_frame.get_data())
color_image = np.asanyarray(color_frame.get_data())
# # Apply colormap on depth image (image must be converted to 8-bit per pixel first)
# depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET)
#
# # Stack both images horizontally
# images = np.hstack((color_image, depth_colormap))
#
# # Show images
# cv2.namedWindow('RealSense', cv2.WINDOW_AUTOSIZE)
# cv2.imshow('RealSense', images)
# cv2.waitKey(1)
fig, axes = plt.subplots(1, 2)
for ax, im in zip(axes, [color_image, depth_image]):
ax.imshow(im)
ax.axis('off')
plt.show()
pipeline.stop()
在此网页中介绍了各个相机内参分别是什么(fx,fy,ppx,ppy等)
在此网页中给出了通过python script获取内参的方法
python script: get intrinsic
import pyrealsense2 as rs
pipeline = rs.pipeline()
config = rs.config()
config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 640, 480, rs.format.rgb8, 30)
cfg = pipeline.start(config)
time.sleep(1)
profile = cfg.get_stream(rs.stream.depth)
intr = profile.as_video_stream_profile().get_intrinsics()
print(intr) # 获取内参 width: 640, height: 480, ppx: 319.115, ppy: 234.382, fx: 597.267, fy: 597.267, model: Brown Conrady, coeffs: [0, 0, 0, 0, 0]
319.1151428222656
print(intr.ppx) # 获取指定某个内参
注意!!!通过python script获取内参一定要看好自己到底用了哪个video stream, 不要无脑复制代码