У меня есть камера Intel Realsense Depth D415.Я пытаюсь использовать этот метод отображения пикселей от канала глубины до цветового канала .Я использую API-интерфейс Python, и, по-видимому, метод pyrealsense2.align()
очень сильно загружает процессор и значительно замедляет работу моего приложения.Итак, я подумал, что, возможно, отображение пикселей глубины в цветных пикселей позволит мне ускорить работу.Однако я столкнулся со следующей проблемой: при попытке сопоставить пиксель глубины [200, 200] с соответствующим цветным пикселем я получаю [15294.3466796875, -113.68994140625] .Я сомневаюсь, что это правильно, поскольку разрешение моего цветового канала составляет 1280x720 , а мои цветовые координаты явно выходят за пределы [0, 1280] , [0, 720] .Код ( ссылка ), который я использую, является следующим:
import pyrealsense2 as rs
pipeline = rs.pipeline()
pipe_profile = pipeline.start()
frames = pipeline.wait_for_frames()
depth_frame = frames.get_depth_frame()
color_frame = frames.get_color_frame()
# Intrinsics & Extrinsics
depth_intrin = depth_frame.profile.as_video_stream_profile().intrinsics
color_intrin = color_frame.profile.as_video_stream_profile().intrinsics
depth_to_color_extrin = depth_frame.profile.get_extrinsics_to(color_frame.profile)
color_to_depth_extrin = color_frame.profile.get_extrinsics_to(depth_frame.profile)
print "\n Depth intrinsics: " + str(depth_intrin)
print "\n Color intrinsics: " + str(color_intrin)
print "\n Depth to color extrinsics: " + str(depth_to_color_extrin)
# Depth scale - units of the values inside a depth frame, i.e how to convert the value to units of 1 meter
depth_sensor = pipe_profile.get_device().first_depth_sensor()
depth_scale = depth_sensor.get_depth_scale()
print depth_scale
# Map depth to color
depth_pixel = [200, 200] # Random pixel
print "\n\t depth_pixel: " + str(depth_pixel)
depth_point = rs.rs2_deproject_pixel_to_point(depth_intrin, depth_pixel, depth_scale)
color_point = rs.rs2_transform_point_to_point(depth_to_color_extrin, depth_point)
color_pixel = rs.rs2_project_point_to_pixel(color_intrin, color_point)
print "\n\t color_pixel: " + str(color_pixel)
pipeline.stop()
Кроме того, это то, что печатается:
Depth intrinsics: width: 1280, height: 720, ppx: 644.664, ppy: 406.596, fx: 965.563, fy: 965.563, model: Brown Conrady, coeffs: [0, 0, 0, 0, 0]
Color intrinsics: width: 640, height: 480, ppx: 330.929, ppy: 233.255, fx: 610.102, fy: 609.615, model: Brown Conrady, coeffs: [0, 0, 0, 0, 0]
Depth to color extrinsics: rotation: [0.99999, 0.00428028, 0.0010846, -0.00427981, 0.999991, -0.000430169, -0.00108643, 0.000425523, 0.999999]
translation: [0.0151529, -0.00012542, -0.000400548]
0.0010000000475
depth_pixel: [200, 200]
color_pixel: [15294.3466796875, -113.68994140625]
1.Кто-нибудь знает об обходном пути в этом случае?
2. Есть ли какие-либо другие преобразования, которые мне нужно выполнить? Любая помощь / руководство очень ценится.