使用自动曝光:
sen.set_option(RS2_OPTION_AUTO_EXPOSURE_PRIORITY, true);
使用手动曝光:
sen.set_option(RS2_OPTION_EXPOSURE, camera_exposure);
//camera_exposure即为曝光参数
另,若想获取当前相机的曝光参数可以使用:
sen.get_option(RS2_OPTION_EXPOSURE)
附上调用Demo,由于是没有imu的型号所以只拉了俩个视频流然后用opencv显示:
#include
#include
#include
const int camera_frame_width = 640;
const int camera_frame_height = 480;
const int camera_fps = 60;
int camera_exposure = 200;
rs2::pipeline pipe;
void InitCamera(){
rs2::context ctx;
rs2::config cfg;
rs2::sensor sen;
rs2::pipeline_profile profile;
auto list = ctx.query_devices();
if (list.size() <= 0){
//exit(0);
throw std::runtime_error("No device detected. Is it plugged in?");
}
rs2::device dev = list.front();
cfg.enable_stream(RS2_STREAM_COLOR, camera_frame_width, camera_frame_height, RS2_FORMAT_BGR8, camera_fps);//向配置添加所需的流
cfg.enable_stream(RS2_STREAM_DEPTH, camera_frame_width, camera_frame_height, RS2_FORMAT_Z16, camera_fps);
pipe = rs2::pipeline();
profile = pipe.start(cfg);
sen = pipe.get_active_profile().get_device().query_sensors()[1];
if (camera_exposure < 0){
sen.set_option(RS2_OPTION_AUTO_EXPOSURE_PRIORITY, true);
std::cout << "自动曝光 参数为[" << sen.get_option(RS2_OPTION_EXPOSURE) << "]" << std::endl;
}
else{
sen.set_option(RS2_OPTION_EXPOSURE, camera_exposure);
std::cout << "手动曝光 参数为[" << sen.get_option(RS2_OPTION_EXPOSURE) << "]" << std::endl;
}
auto depth_stream=profile.get_stream(RS2_STREAM_DEPTH).as();
auto color_stream=profile.get_stream(RS2_STREAM_COLOR).as();
}
int main() {
InitCamera();
rs2::frameset frames;
while (true){
frames = pipe.wait_for_frames();//等待所有配置的流生成框架
rs2::align align_to_color(RS2_STREAM_COLOR);
frames = align_to_color.process(frames);
rs2::frame color_frame = frames.get_color_frame();
rs2::frame depth_frame = frames.get_depth_frame();
cv::Mat frame_color(cv::Size(camera_frame_width, camera_frame_height), CV_8UC3, (void*)color_frame.get_data(), cv::Mat::AUTO_STEP);
cv::Mat frame_depth(cv::Size(camera_frame_width, camera_frame_height), CV_16U, (void*)depth_frame.get_data(), cv::Mat::AUTO_STEP);
cv::imshow("color", frame_color);
cv::imshow("depth", frame_depth);
cv::waitKey(1);
}
return 0;
}
自己最近写realsense的时候发现这方面的中文资料着实算不上多,顺带机翻了官方文档中定义的控制参数表格,希望有所帮助:)文档链接我会贴在最后。
RS2_OPTION_BACKLIGHT_COMPENSATION | 启用/禁用彩色背光补偿 |
RS2_OPTION_BRIGHTNESS | 彩色图像亮度 |
RS2_OPTION_CONTRAST | 彩色图像对比度 |
RS2_OPTION_EXPOSURE | 控制彩色相机的曝光时间。 设置任何值将禁用自动曝光 |
RS2_OPTION_GAIN | 彩色图像增益 |
RS2_OPTION_GAMMA | 彩色图像伽玛设置 |
RS2_OPTION_HUE | 彩色图像色调 |
RS2_OPTION_SATURATION | 彩色图像饱和度设置 |
RS2_OPTION_SHARPNESS | 彩色图像清晰度设置 |
RS2_OPTION_WHITE_BALANCE | 控制彩色图像的白平衡。 设置任何值将禁用自动白平衡 |
RS2_OPTION_ENABLE_AUTO_EXPOSURE | 启用/禁用彩色图像自动曝光 |
RS2_OPTION_ENABLE_AUTO_WHITE_BALANCE | 启用/禁用彩色图像自动白平衡 |
RS2_OPTION_VISUAL_PRESET | 提供对深度相机的几组推荐选项预设的访问 |
RS2_OPTION_LASER_POWER | 激光发射器的功率,0表示投影仪关闭 |
RS2_OPTION_ACCURACY | 设置每帧投影的图案数量。 准确度值越高,投射的模式就越多。 增加模式的数量有助于实现更好的准确性。 请注意,此控件正在影响深度 FPS |
RS2_OPTION_MOTION_RANGE | 运动与范围的权衡,较低的值允许更好的运动灵敏度和较高的值允许更好的深度范围 |
RS2_OPTION_FILTER_OPTION | 设置过滤器以应用于每个深度帧。 每个过滤器都根据应用要求进行了优化 |
RS2_OPTION_CONFIDENCE_THRESHOLD | 深度算法管道使用的置信度阈值,用于设置像素将获得有效范围还是将标记为无效范围 |
RS2_OPTION_EMITTER_ENABLED | 发射器选择:0 – 禁用所有发射器。 1 – 启用激光。 2 – 启用自动激光。 3 – 启用 LED。 |
RS2_OPTION_FRAMES_QUEUE_SIZE | 每个流允许用户保留的帧数。 试图保持更多帧将导致丢帧。 |
RS2_OPTION_TOTAL_FRAME_DROPS | 从所有流中检测到的丢帧总数 |
RS2_OPTION_AUTO_EXPOSURE_MODE | 自动曝光模式:静态、防闪烁和混合 |
RS2_OPTION_POWER_LINE_FREQUENCY | 电源线频率控制防闪烁关闭/50Hz/60Hz/自动 |
RS2_OPTION_ASIC_TEMPERATURE | 当前 Asic 温度 |
RS2_OPTION_ERROR_POLLING_ENABLED | 禁用错误处理 |
RS2_OPTION_PROJECTOR_TEMPERATURE | 当前投影仪温度 |
RS2_OPTION_OUTPUT_TRIGGER_ENABLED | 在每个深度帧上启用/禁用从相机输出到任何外部设备的触发器 |
RS2_OPTION_MOTION_MODULE_TEMPERATURE | 当前运动模块温度 |
RS2_OPTION_DEPTH_UNITS | 单个深度单位表示的米数 |
RS2_OPTION_ENABLE_MOTION_CORRECTION | 启用/禁用运动数据的自动校正 |
RS2_OPTION_AUTO_EXPOSURE_PRIORITY | 允许传感器根据照明条件动态调整帧速率 |
RS2_OPTION_COLOR_SCHEME | 数据可视化的配色方案 |
RS2_OPTION_HISTOGRAM_EQUALIZATION_ENABLED | 对深度数据进行直方图均衡后处理 |
RS2_OPTION_MIN_DISTANCE | 到目标的最小距离 |
RS2_OPTION_MAX_DISTANCE | 到目标的最大距离 |
RS2_OPTION_TEXTURE_SOURCE | 纹理映射流唯一 ID |
RS2_OPTION_FILTER_MAGNITUDE | 2D滤镜效果。 具体解释在过滤器的上下文中给出 |
RS2_OPTION_FILTER_SMOOTH_ALPHA | 2D 滤波器参数控制平滑的权重/半径。 |
RS2_OPTION_FILTER_SMOOTH_DELTA | 二维滤波器范围/有效阈值 |
RS2_OPTION_HOLES_FILL | 通过适当的孔填充增强深度数据后处理 |
RS2_OPTION_STEREO_BASELINE | 基于立体的深度相机中第一个和第二个成像器之间的距离(以毫米为单位) |
RS2_OPTION_AUTO_EXPOSURE_CONVERGE_STEP | 允许在自动曝光算法中动态调整目标曝光的收敛步长值 |
RS2_OPTION_INTER_CAM_SYNC_MODE | 实施相机间硬件同步模式。 适用于 D400/L500/卷帘 SKU |
RS2_OPTION_STREAM_FILTER | 选择 要处理的流 |
RS2_OPTION_STREAM_FORMAT_FILTER | 选择 要处理的流格式 |
RS2_OPTION_STREAM_INDEX_FILTER | 选择 要处理的流索引 |
RS2_OPTION_EMITTER_ON_OFF | 支持时,此选项使相机每帧切换发射器状态。 0 表示禁用,1 表示启用 |
RS2_OPTION_ZERO_ORDER_POINT_X | 已弃用!!! - 零序点 x |
RS2_OPTION_ZERO_ORDER_POINT_Y | 已弃用!!! - 零订单点 y |
RS2_OPTION_LLD_TEMPERATURE | LDD温度 |
RS2_OPTION_MC_TEMPERATURE | MC温度 |
RS2_OPTION_MA_TEMPERATURE | 平均温度 |
RS2_OPTION_HARDWARE_PRESET | 硬件流配置 |
RS2_OPTION_GLOBAL_TIME_ENABLED | 禁用全球时间 |
RS2_OPTION_APD_TEMPERATURE | APD温度 |
RS2_OPTION_ENABLE_MAPPING | 启用内部地图 |
RS2_OPTION_ENABLE_RELOCALIZATION | 启用基于外观的重定位 |
RS2_OPTION_ENABLE_POSE_JUMPING | 启用位置跳跃 |
RS2_OPTION_ENABLE_DYNAMIC_CALIBRATION | 启用动态校准 |
RS2_OPTION_DEPTH_OFFSET | 从传感器到深度原点的偏移量(以毫米为单位) |
RS2_OPTION_LED_POWER | LED(发光二极管)的功率,0表示LED关闭 |
RS2_OPTION_ZERO_ORDER_ENABLED | 已弃用! - 切换零阶模式 |
RS2_OPTION_ENABLE_MAP_PRESERVATION | 开始时保留以前的地图 |
RS2_OPTION_FREEFALL_DETECTION_ENABLED | 检测到自由落体时启用/禁用传感器关闭(默认开启) |
RS2_OPTION_AVALANCHE_PHOTO_DIODE | 更改接收器中雪崩光电二极管的曝光时间 |
RS2_OPTION_POST_PROCESSING_SHARPENING | 更改后处理图像中的锐化量 |
RS2_OPTION_PRE_PROCESSING_SHARPENING | 更改预处理图像中的锐化量 |
RS2_OPTION_NOISE_FILTERING | 控制边缘和背景噪声 |
RS2_OPTION_INVALIDATION_BYPASS | 启用像素失效 |
RS2_OPTION_AMBIENT_LIGHT | 已弃用! - 改用 RS2_OPTION_DIGITAL_GAIN。 |
RS2_OPTION_DIGITAL_GAIN | 更改深度数字增益,请参见 rs2_digital_gain 的值 |
RS2_OPTION_SENSOR_MODE | 分辨率模式:有关值,请参见 rs2_sensor_mode |
RS2_OPTION_EMITTER_ALWAYS_ON | 持续启用激光开启(仅限 GS SKU) |
RS2_OPTION_THERMAL_COMPENSATION | 选定 D400 SKU 的深度热补偿 |
RS2_OPTION_TRIGGER_CAMERA_ACCURACY_HEALTH | 通过定期校准启用深度和颜色帧同步,以实现正确对齐 |
RS2_OPTION_RESET_CAMERA_ACCURACY_HEALTH | |
RS2_OPTION_HOST_PERFORMANCE | 设置主机性能模式以优化设备设置,以便主机能够跟上工作负载,例如 USB 事务粒度,将选项设置为低性能主机会导致更大的 USB 事务大小并减少事务数量,从而在主机相对较弱的情况下提高性能和稳定性与工作量相比 |
RS2_OPTION_HDR_ENABLED | 启用/禁用 HDR |
RS2_OPTION_SEQUENCE_NAME | HDR 序列名称 |
RS2_OPTION_SEQUENCE_SIZE | HDR 序列大小 |
RS2_OPTION_SEQUENCE_ID | HDR 序列 ID - 0 不是 HDR; HDR 配置的序列 ID 从 1 开始 |
RS2_OPTION_HUMIDITY_TEMPERATURE | 湿度温度 [摄氏度] |
RS2_OPTION_ENABLE_MAX_USABLE_RANGE | 给定场景中的环境光量,打开/关闭最大可用深度传感器范围 |
RS2_OPTION_ALTERNATE_IR | 打开/关闭交替红外,当启用交替红外时,红外图像保持深度相关的幅度。 |
RS2_OPTION_NOISE_ESTIMATION | 噪声估计 - 指示 IR 图像上的噪声 |
RS2_OPTION_ENABLE_IR_REFLECTIVITY | 启用数据收集以计算 IR 像素反射率 |
RS2_OPTION_AUTO_EXPOSURE_LIMIT | 以微秒为单位设置并获取自动曝光限制。 默认值为 0,表示全曝光范围。 如果请求的曝光限制大于帧时间,它将在运行时设置为帧时间。 设置将在下一个流会话之前生效。 |
RS2_OPTION_AUTO_GAIN_LIMIT | 设置和获取范围从 16 到 248 的自动增益限制。默认值为 0,表示完全增益。 如果请求的增益限制小于 16,则设置为 16。如果请求的增益限制大于 248,则设置为 248。设置将在下一个流会话之前生效。 |
RS2_OPTION_COUNT | 枚举值的数量。 不是有效输入:旨在用于 for 循环。 |
RealSense官方文档链接:librealsense2: rs_option.h File Referencehttps://docs.ros.org/en/kinetic/api/librealsense2/html/rs__option_8h.html#a8b9c011f705cfab20c7eaaa7a26040e2a1b190100d8ca308207b8661d5cd7e049librealsense2: TinyCThread API Reference
https://docs.ros.org/en/kinetic/api/librealsense2/html/index.html