如何将“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*”?的主要内容,如果未能解决你的问题,请参考以下文章