Intel Realsense D系列深度相机 使用C++设置手动/自动调整曝光

使用自动曝光:

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 <librealsense2/rs.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>

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<rs2::video_stream_profile>();
    auto color_stream=profile.get_stream(RS2_STREAM_COLOR).as<rs2::video_stream_profile>();
}

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 Referencehttps://docs.ros.org/en/kinetic/api/librealsense2/html/index.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值