当前位置:   article > 正文

opencv realsense 显示深度图_opencv 深度图识别

opencv 深度图识别
#include <iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string>
using namespace std;

#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
#include<librealsense2/rs.hpp>

//如果移动文件位置到新文件夹,直接报错
//报错内容为找不到导入的项目glfw-imgui.props。请确认(路径)import声明中的表达式正确,且文件位于磁盘上
int main() try
{
    //声明彩色图
    rs2::colorizer color_map;

    //声明realsense管道,
    rs2::pipeline pipe;

    //数据流配置信息【这步其实很重要】
    rs2::config pipe_config;
    pipe_config.enable_stream(RS2_STREAM_DEPTH, 640, 480, RS2_FORMAT_Z16, 30);
    pipe_config.enable_stream(RS2_STREAM_COLOR, 640, 480, RS2_FORMAT_BGR8, 30);

    //开始传送数据流
    rs2::pipeline_profile profile = pipe.start(pipe_config);

    const char* depth_win = "depth_Image";
    namedWindow(depth_win, WINDOW_AUTOSIZE);
    const char* color_win = "color_Image";
    namedWindow(color_win, WINDOW_AUTOSIZE);

    //    //获取深度像素与长度单位的关系
    //    float depth_scale = get_depth_scale(profile.get_device());
    //    rs2_stream align_to = find_stream_to_align(profile.get_streams());

    while (waitKey(1) && cvGetWindowHandle(depth_win)) {
        rs2::frameset data = pipe.wait_for_frames();//等待下一帧
        rs2::frame depth = data.get_depth_frame().apply_filter(color_map);//获取深度图,加颜色滤镜
        rs2::frame color = data.get_color_frame();

        //获取宽高
        const int depth_w = depth.as<rs2::video_frame>().get_width();
        const int depth_h = depth.as<rs2::video_frame>().get_height();
        const int color_w = color.as<rs2::video_frame>().get_width();
        const int color_h = color.as<rs2::video_frame>().get_height();

        //创建OPENCV类型 并传入数据
        Mat depth_image(Size(depth_w, depth_h), CV_8UC3, (void*)depth.get_data(), Mat::AUTO_STEP);
        Mat color_image(Size(color_w, color_h), CV_8UC3, (void*)color.get_data(), Mat::AUTO_STEP);
        //显示
        imshow(depth_win, depth_image);
        imshow(color_win, color_image);
    }
    return EXIT_SUCCESS;
}
catch (const rs2::error& e) {
    std::cout << "RealSense error calling" << e.get_failed_function() << "(" << e.get_failed_args() << "):\n"
        << e.what() << endl;
    return EXIT_FAILURE;
}
catch (const std::exception& e) {
    std::cout << e.what() << endl;
    return EXIT_FAILURE;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/888051
推荐阅读
相关标签
  

闽ICP备14008679号