如何将“rs2::video frame”转换为“CvCapture*”?

Posted

技术标签:

【中文标题】如何将“rs2::video frame”转换为“CvCapture*”?【英文标题】:How can I convert "rs2::video frame" to "CvCapture* "? 【发布时间】:2018-04-10 10:28:43 【问题描述】:

我是英特尔 Realsense SDK 和 Visual Studio 2017(C 或 C++)中英特尔 Realsense 摄像头 D435 编码的新手。

在我的示例中,我有以下内容,

static rs2::frameset current_frameset;
auto color = current_frameset.get_color_frame();
frame = cvQueryFrame(color);

我在第 3 行遇到错误,因为 “无法将 'rs2::video_frame' 转换为 'CvCapture'”

我无法找到解决此问题的方法,但事实证明这很困难并导致更多错误。

有谁知道我该如何解决这个问题?

感谢您的帮助!

【问题讨论】:

我认为如果您在问题中添加更多详细信息会有所帮助,如果可能,请链接到源代码?你在用github.com/IntelRealSense/librealsense吗? 很抱歉,没有足够的代码。简单地说,我想要一个将 rs2::video_frame 转换为 CvCapture 的函数。 【参考方案1】:

cvQueryFrame 接受 cvCapture 实例,它用于从相机中检索帧。在 LibRS 中,您检索回来的框架已经可以使用,您不必再次取回它。附上LibRS中CV例子的sn-p,可以参考完整代码here

rs2::pipeline pipe;
// Start streaming with default recommended configuration
pipe.start();

using namespace cv;
const auto window_name = "Display Image";
namedWindow(window_name, WINDOW_AUTOSIZE);

while (waitKey(1) < 0 && cvGetWindowHandle(window_name))

    rs2::frameset data = pipe.wait_for_frames(); // Wait for next set of frames from the camera
    rs2::frame depth = color_map(data.get_depth_frame());

    // Query frame size (width and height)
    const int w = depth.as<rs2::video_frame>().get_width();
    const int h = depth.as<rs2::video_frame>().get_height();

    // Create OpenCV matrix of size (w,h) from the colorized depth data
    Mat image(Size(w, h), CV_8UC3, (void*)depth.get_data(), Mat::AUTO_STEP);

    // Update the window with new data
    imshow(window_name, image);

【讨论】:

以上是关于如何将“rs2::video frame”转换为“CvCapture*”?的主要内容,如果未能解决你的问题,请参考以下文章

如何将UTC秒数转换为日期,100分,在线等

如何将DataGridView转换为DataTable?

手机如何将照片转换为pdf

ArcEngine中如何将图形转换为要素

如果将一个NSObject从NSDictionary转换为NSString?

如何将string转换为datetime