“悉灵杯”课题研究-MV-EB435i立体相机图像处理UI界面开发
本文介绍了MV-EB435i立体相机在图像处理上简单快速的UI界面开发,基于OpenCV的cvui。

        深度相机调试界面开发工具可供的选择有很多,主流的有QT,imgui,Pangolin等,但是以上的UI界面开发工具或者使用繁琐,入门比较困难,或者需要复杂的环境依赖,无法短时间快速掌握。本文介绍了一个小而美的UI界面开发工具,基于OpenCV的cvui,使用时只需添加一个头文件,控件简单,适合短时间内2D图像处理的快速开发。


一. CVUI介绍

        cvui是一个非常简单的UI库,其渲染和UI控件均基于OpenCV实现,因此除OpenCV外无需其他的外部依赖,同时,简单友好的API和只有一个头文件的结构使其可以快速嵌入到项目中,极大地提高开发效率。

        cvui演示图:





二. MV-EB435i集成

        cvui主要针对2D图像处理,因此我们要从立体相机中获得彩色图,深度图,红外相机图进行渲染。


MV3D_RGBD_FetchFrame(handle, &stFrameData, 5000); //获取帧数据

RIFrameInfo depth = {0};

RIFrameInfo rgb = {0};

parseFrame(&stFrameData, &depth, &rgb);//解析帧数据

cv::Mat color_frame(rgb.nHeight, rgb.nWidth, CV_8UC3, rgb.pData);//将彩色图和深度图转化成OpenCV的Mat格式

cv::Mat depth_frame(depth.nHeight, depth.nWidth, CV_16UC1, depth.pData);


        获得待处理的图像后,进行UI控件设置,包括数值窗口,按钮,标题等。


 // 显示title

cvui::text(back_ground, 530, 10, "|color view|", 0.8, 0xFFFFFFFF);

cvui::text(back_ground, 1350, 10, "|depth view|", 0.8, 0xFFFFFFFF);

cvui::text(back_ground, 510, 500, "|custom1 view|", 0.8, 0xFFFFFFFF);

cvui::text(back_ground, 1320, 500, "|custom2 view|", 0.8, 0xFFFFFFFF);

//分辨率

int pose_x = 10, pose_y = 10, text_pos_y = 60;

int y_step = 90;

cvui::window(back_ground, pose_x, pose_y, 180, 80, "image width", 0.8);

cvui::text(back_ground, pose_x + 60, text_pos_y, std::to_string(image_width), 0.8, 0xFFFFFFFF);

pose_y += y_step;

text_pos_y += y_step;

cvui::window(back_ground, pose_x, pose_y, 180, 80, "image height", 0.8);

cvui::text(back_ground, pose_x + 60, text_pos_y, std::to_string(image_height), 0.8, 0xFFFFFFFF);

// 鼠标点获取

pose_y += y_step;

text_pos_y += y_step;

cvui::window(back_ground, pose_x, pose_y, 180, 80, "mouse point", 0.8);

cvui::text(back_ground, pose_x + 10, text_pos_y, "(" + std::to_string(mouse_x) + "," + std::to_string(mouse_y) + ")", 0.8, 0xFFFFFFFF);

// 深度值获取

pose_y += y_step;

text_pos_y += y_step;

cvui::window(back_ground, pose_x, pose_y, 180, 80, "depth value", 0.8);

cvui::text(back_ground, pose_x + 50, text_pos_y, std::to_string(depth_value), 0.8, 0xFFFFFFFF);

// 自定义窗口鼠标获取

pose_y += y_step;

text_pos_y += y_step;

cvui::window(back_ground, pose_x, pose_y, 180, 80, "custom mouse", 0.8);

cvui::text(back_ground, pose_x + 10, text_pos_y, "(" + std::to_string(custom_point_x) + "," + std::to_string(custom_point_y) + ")", 0.8, 0xFFFFFFFF);

       

        整体显示控件:



三. 交互区域设置及多窗口

        立体相机获取的深度值在调试过程中往往需要针对某一点进行输出,因此可以在UI界面上设置鼠标交互界面,鼠标停留在深度图的某一点上,UI便能实时反映出深度值。需注意的是,在UI界面上已经指定了深度图及彩色图大小,所以要进行坐标转换,才能反映出在真实大小图片的坐标。设置交互区域如下:


// 深度图鼠标交互区域
        int status_depth = cvui::iarea(1020, 40, 800, 450);
        if (status_depth == cvui::OVER)
        {
            mouse_x = (cvui::mouse().x - 1020) * image_width / 800;
            mouse_y = (cvui::mouse().y - 40) * image_height / 450;
            if (!depth_image.empty())
            {
                depth_value = static_cast<int>(depth_image.at<unsigned short>(cv::Point(mouse_x, mouse_y)));
            }
        }

        设置UI多窗口显示使用的是cvui::image()函数,在背景上一共显示了四个界面,分别是彩色图,深度图,自定义图片窗口一,自定义图片窗口二,彩色图和深度图为相机获取的原数据,自定义窗口为用户根据自己需求显示的图片,这里作为演示将彩色图二值化后放在了自定义窗口,实际上可以放置其他满足OpenCV中copyTo()函数要求的Mat类型图片。


// 显示彩色图
        if (!color_image.empty())
        {
            cvui::image(back_ground, 200, 40, color_image);

            // 这里作为演示,将彩色图进行二值化,用户可以对custom_image做任何图像处理
            cv::cvtColor(color_image, custom_image1, cv::COLOR_BGR2GRAY);
            cv::threshold(custom_image1, custom_image1, 150, 255, cv::THRESH_OTSU);
            //转换成伪彩色图显示灰度,因为源代码使用了copyTo
            cv::cvtColor(custom_image1, custom_image1, cv::COLOR_GRAY2BGR);
        }
        // 如果彩色图为空,则在该位置显示警告
        else
            cvui::image(back_ground, 200, 40, empty_image);

        // 显示深度图
        if (!render_depth.empty())
        {
            cvui::image(back_ground, 1020, 40, render_depth);
        }
        else
            cvui::image(back_ground, 1020, 40, empty_image);

           

        最后,放置按钮控件,这里用作退出程序和进行录像。


////////////////////////// 按钮部分/////////////////////////////
        if (cvui::button(back_ground, 60, 800, "&Record"))
        {
            enable_record = !enable_record;
        }
        if (cvui::button(back_ground, 60, 900, "&EXIT"))
        {
            break;
        }


        最终画面:



代码链接:https://github.com/Nick-the-remaker/Hikrobot_ros.git

版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇

6月巡回交流会热门问题解答

下一篇

“悉灵杯”课题研究-MV-EB435i立体相机集成Apriltags发布相机位姿

评论请先登录 登录
全部评论 0
Lv.0
0
关注
5
粉丝
2
创作
10
获赞
所属专题
  • 使用3D相机MV-EB435i基于OpenCV的客流检测与异常识别的实现
  • 悉灵杯”课题研究进展(一)通过海康RGB-D相机获取带RGB信息的点云
  • “悉灵杯”课题研究-基于RGB_D相机的物品位置计算
  • “悉灵杯”课题研究-对RGB_D相机采集的三维点云处理
  • “悉灵杯”课题研究-RGB_D相机SDK集成及Open3d点云基本处理
  • “悉灵杯”课题研究-集成RGB_D相机SDK的Open3d点云可视化
  • “悉灵杯”课题研究-集成RGB_D相机SDK的Open3d点云功能UI项目开发(项目demo)
  • “悉灵杯”课题研究-RGB_D相机SDK三维点云存储
  • “悉灵杯”课题研究-OpenNI集成及示例代码开发
  • 悉灵杯”课题研究-MV-EB435i立体相机基于opencv图像处理使用yolov5的物体识别
  • “悉灵杯”课题研究-基于opecv的集成RGB_D相机SDK的基础小样物品颜色检测及人脸识别
  • OpenCV中利用knn进行数字(0-9)识别--RGB-D相机采集
  • “悉灵杯”课题研究-基于MV-EB435i的落差边缘检测算法开发记录
  • 悉灵杯”课题研究-LabVIEW集成及示例代码开发
  • “悉灵杯”课题研究-MV-EB435i立体相机集成Apriltags发布相机位姿
  • “悉灵杯”课题研究-MV-EB435i立体相机图像处理UI界面开发
  • “悉灵杯”课题研究-基于ROS1的RGB-D相机SDK集成及示例代码开发
  • 第二届“悉灵杯”课题移动机器人感知研究进展
  • “悉灵杯”课题研究—手眼标定方案
  • 第二届“悉灵杯”课题研究-基于RGB_D相机的室内环境建模
  • 悉灵杯”课题研究进展(二)-基于三维模型/场景点云的虚拟仿真数据生成
  • 悉灵杯”课题研究进展(一)-实例分割网络模型搭建与实验场景介绍
  • “悉灵杯”课题研究报告-基于RGB-D相机的2D和3D抓取定位方案研究
  • “悉灵杯”课题研究-基于点云配准算法GICP的3D抓取方案研究
  • “悉灵杯”课题研究-基于YOLO和GGCNN的物品平面抓取方案研究
  • 动态手势控制音频播放器-成果物
  • 第二届“悉灵杯”课题研究报告-动态手势控制音频播放器设计
  • 动态手势控制音频播放器(五)动态手势控制音频播放器exe
  • 动态手势控制音频播放器(四)动态手势识别系统的设计
  • 动态手势控制音频播放器(三)音频播放器设计
  • 动态手势控制音频播放器(二)动态手势识别系统的设计
  • 动态手势控制音频播放器(一)总体方案设计
  • 悉灵杯”课题研究进展(四)RGB-D相机引导机械臂分拣物料
  • 悉灵杯”课题研究进展(三)RGB-D相机引导机械臂分拣物料
  • 悉灵杯”课题研究进展(二)RGB-D相机引导机械臂分拣物料
  • ”悉灵杯”课题研究报告-基于RGB-D相机的机械臂物料分拣系统研究
  • 悉灵杯”课题研究报告-基于深度学习方法和虚拟仿真数据的机械臂引导方案
  • 第二届“悉灵杯”课题研究机械臂引导研究报告
  • 第二届“悉灵杯”课题研究机械臂引导研究进展(二)
  • 第二届“悉灵杯”课题研究机械臂引导研究进展(一)
相关阅读
  • 探寻机器视觉新星|第二届“启智杯”机器视觉设计大赛获奖名单公布
    2024-04-08 浏览 0
  • VM4.4更新亮点
    2024-04-12 浏览 0
  • 第二届启智杯—光伏电池片质检视觉方案设计
    2024-04-15 浏览 0
  • 每日分享|3D视觉成像之双目立体视觉原理
    2024-03-21 浏览 0
  • 海康AMR应用场景中蜂鸣器的使用
    2024-04-03 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器