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 Reference 

