我有一个同时使用 realsense2 和 opencv2 库的 C++ 应用程序。我正在从两个 D415 相机中提取深度和 RGB 帧。我可以毫无问题地拼接 RGB 帧;但是,经过大量研究,我找不到任何有关如何将步骤从 RGB 帧缝合复制到深度帧的示例。有谁知道如何将缝合步骤从一个拼接作业(在我的情况下为 RGB)复制到另一个拼接工作(在我的情况下为深度)?
我在这里查看了 Stitcher 类参考文档:https ://docs.opencv.org/master/d2/d8d/classcv_1_1Stitcher.html
如果有人以前这样做过并且可以提供一些指导,那就太好了。
这是我用来缝合(缩短)的工作代码:
// Start a streaming pipeline for each connected camera
for (auto && device : context.query_devices())
{
string serial = device.get_info(RS2_CAMERA_INFO_SERIAL_NUMBER);
pipeline pipeline(context);
config config;
config.enable_device(serial);
config.enable_stream(RS2_STREAM_COLOR, 1280, 720, RS2_FORMAT_BGR8, 15);
config.enable_stream(RS2_STREAM_DEPTH, 1280, 720);
config.enable_stream(RS2_STREAM_INFRARED, 1);
pipeline.start(config);
pipelines.emplace_back(pipeline);
colorizers[serial] = colorizer();
}
map<int, frame> render_frames;
while(true)
{
vector<Mat> mats;
vector<frame> new_frames;
for (auto && pipeline : pipelines)
{
frameset frameset = pipeline.wait_for_frames();
if (frameset)
{
mats.push_back(frame_to_mat(frameset.get_color_frame()));
}
}
Mat stitchedImage;
Ptr<Stitcher> stitcher = Stitcher::create(Stitcher::PANORAMA);
Stitcher::Status stitcherStatus = stitcher->stitch(mats, stitchedImage);
if (stitcherStatus == Stitcher::OK)
{
imshow("Stitched Image", stitchedImage);
auto k = waitKey(200);
} else {
cout << "Error stitching image.\n";
}
}
谢谢!