Kinect2.0-空间长度测量

1.

鼠标左键按下选择起点,拖动鼠标,左键放开,确定终点。

img_b8681109536af93105198fdf88c4965a.png
实现效果1

img_622b2e0506dc262aa9ac91fe11028b27.png
实现效果2

2.

在linux下使用libfreenect2开源多平台驱动来获取kinect2.0的传感器信息,得到深度信息,并通过libfreenect2提供的getPointXYZ函数,来得到相机坐标系中某一点的空间坐标。

img_4f64dedc4df690d57aef4191c8780d73.png

3.

运用鼠标操作函数(setMouseCallback),来获取画面中的两个点,并用直线将他们连接起来,通过(2)中的方法得到两点的空间坐标:A(x1,y1,z1),B(x2,y2,z2)。通过简单计算,便可以求得两点的实际距离。



4.

关键代码:

    while(!protonect_shutdown){listener.waitForNewFrame(frames);libfreenect2::Frame *rgb = frames[libfreenect2::Frame::Color];libfreenect2::Frame *depth = frames[libfreenect2::Frame::Depth];cv::Mat(rgb->height, rgb->width, CV_8UC4, rgb->data).copyTo(rgbmat);cv::Mat(depth->height, depth->width, CV_32FC1, depth->data).copyTo(depthmat);cv::Mat(registered.height, registered.width, CV_8UC4, registered.data).copyTo(rgbd);registration->apply(rgb, depth, &undistorted, &registered, true, &depth2rgb);cv::Mat(registered.height, registered.width, CV_8UC4, registered.data).copyTo(rgbd);//resize(rgbmat, dst1, Size(), c, d, INTER_NEAREST);inRange(depthmat,Scalar(a),Scalar(b),dst);//morphologyEx(dst,dst,MORPH_OPEN,kernel);findContours(dst,contours,hireachy,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE,Point(0,0));if (contours.size() > 0){double maxArea=0;for (int i = 0; i < contours.size(); i++){double area = contourArea(contours[static_cast<int>(i)]);if (area > maxArea){maxArea = area;rect = boundingRect(contours[static_cast<int>(i)]);minEnclosingCircle(contours[static_cast<int>(i)], center, radius);}}}setMouseCallback("main",on_MouseHandle);     // 鼠标操作registration->getPointXYZ(&undistorted, pt11.y, pt11.x,x1, y1, z1);  // 像素坐标转化为空间坐标registration->getPointXYZ(&undistorted,pt21.y,pt21.x,x2, y2, z2);//rectangle(rgbd, rect, Scalar(0,255,0),2);line(rgbd, pt11, pt21, Scalar(0,255,0));   //  划线l = sqrt(pow((x1-x2),2) + pow((y1-y2),2) + pow((z1-z2),2));cout << "length:" << l << "m" <<endl;   // 输出长度sprintf(str, "%.4lf", l);putText(rgbd, str1, pt21, FONT_HERSHEY_COMPLEX, 1,Scalar(0, 0, 255), 1);putText(rgbd, str, pt21, FONT_HERSHEY_COMPLEX, 1,Scalar(0, 0, 255), 1);circle(rgbd, pt11, 1, Scalar(255,255,0), 2);circle(rgbd, pt21, 1, Scalar(255,255,0), 2);cv::imshow("catch",dst);cv::imshow("depth", depthmat /4500.0);cv::imshow("main", rgbd);int key = cv::waitKey(1);protonect_shutdown = protonect_shutdown || (key > 0 && ((key & 0xFF) == 27)); // shutdown on escapelistener.release(frames);}dev->stop();dev->close();delete registration;#endifstd::cout << "stop!" << std::endl;return 0;
}void on_MouseHandle(int event, int x, int y, int flags, void* ustc)
{if (event == EVENT_LBUTTONDOWN){Point pt1 = Point(x, y);pt11 = pt1;}else if (event == EVENT_LBUTTONUP){Point pt2 = Point(x, y);pt21 = pt2;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450850.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有完美的软件:编程永远不容易

摘要&#xff1a;很多人想用十全十美来修饰一样东西&#xff0c;比如软件&#xff0c;对于客户来说&#xff0c;当然希望他们的软件能做到完美。虽然很多专家说利用一些规范可以让软件达到更好&#xff01;但是在现实开发中&#xff0c;真的会有那么完美的软件吗&#xff1f; 最…

代码审查“思维导图”

摘要&#xff1a;随着人们对软件质量要求的不断提高&#xff0c;软件开发的每一个环节都应该得到十足的重视&#xff0c;俗话说&#xff1a;“细节决定成败”&#xff0c;就此&#xff0c;本文提供了一个代码审查“思维导图”&#xff0c;希望对所有码农们有所帮助。 代码审查&…

The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 tomcat启动报务后访问页面报错&#xff1a; org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/co…

优秀程序员和一般程序员差别在哪?

摘要&#xff1a;在这个世界上有两种程序员&#xff1a;Day Programmers&#xff08;白班程序员&#xff09;和Night Programmers&#xff08;夜猫子程序员&#xff09;&#xff0c;你知道优秀程序员和一般程序员有哪些差别吗&#xff1f;你又是哪一类型的呢&#xff1f;俗话说…

Navicat工具导出mySQL数据库某个视图结构的.sql脚本

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 用Navicat工具怎么都导不出来mySQL数据库的某个视图.sql脚本&#xff0c;即使导出来也只是包含视图记录&#xff0c;不包含视图结构。经…

瞧瞧苹果OS X如何干掉Linux

摘要&#xff1a;如果你去过Facebook或者其它一些创业类科技公司&#xff0c;你会发现随处可见的Mac&#xff0c;无论是CEO还是开发者&#xff0c;都可能在使用Mac。而以往很受IT人士青睐的Linux好像在消失&#xff0c;这是真的吗&#xff1f;苹果OS X是如何干掉Linux的&#x…

超全十大经典排序算法及其分析

文章目录0.算法概述0.1 算法分类0.2 算法复杂度0.3 相关概念1. 冒泡排序&#xff08;Bubble Sort&#xff09;1.1 算法描述&#xff1a;1.2 图解演示1.3 代码实现1.4 优化过程1.5 性能分析2. 选择排序&#xff08;Selection Sort&#xff09;2.1 算法描述&#xff1a;2.2 图解演…

eclipse安装JAVA反编译插件

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 前言&#xff1a;在实际的开发中几乎都会使用到一些框架来辅助项目的开发工作&#xff0c;对于一些框架的代码我们总怀有一些好奇之心&a…

noip2014生活大爆炸版石头剪刀布

题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一 样&#xff0c;则不分胜负。在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。 升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势: 斯波克:《星际迷航》主角之…

聊聊毕业设计系列 --- 系统实现

效果展示 github moment-server github地址 moment github地址 moment-manage github地址 articles 聊聊毕业设计系列 --- 项目介绍 聊聊毕业设计系列 --- 系统实现 前言 在上一篇文章中&#xff0c;主要是对项目做了介绍&#xff0c;并且对系统分析和系统设计做了大概的介绍。…

js 实现用window.print()打印页面中的部分内容,局部打印

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 如下方法&#xff1a; function printProof(){var printData document.getElementById("forPrint").innerHTML; // 只打印 f…

Spring 之注解事务 @Transactional

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 先让我们看代码吧&#xff01; 以下代码为在“Spring3事务管理——基于tx/aop命名空间的配置”基础上修改。首先修改applicationContext…

超级程序员神话

摘要&#xff1a;大部分的程序员在思想里都会某种程度的承认&#xff0c;承认自己只是一个普通的程序员&#xff0c;但这世界上确实有一些超级程序员&#xff0c;在一个为企业开发应用的程序员和一个为谷歌写搜索算法的程序员之间&#xff0c;或和一个开发用来控制读写头从磁盘…

HashMap30连问,彻底搞懂HashMap

文章目录一、背景知识1、什么是Map&#xff1f;2、什么是Hash&#xff1f;3、什么是哈希表&#xff1f;4、什么是HashMap?5、如何使用HashMap&#xff1f;6、HashMap有哪些核心参数&#xff1f;7、HashMap与HashTable的对比&#xff1f;8、HashMap和HashSet的区别&#xff1f;…

如何使用postman做接口测试

1、get请求传参 只要是get请求都可以在浏览器中直接发&#xff1a; 在访问地址后面拼 ?keyvalue&keyvalue 例如&#xff1a;在浏览器中直接输入访问地址&#xff0c;后面直接拼需要传给服务器的参数http://api.nnzhp.cn/api/user/stu_info?stu_name小黑2、post请求&…

【狂神说】分析前后端分离开源项目?

文章目录1.如何分析开源项目项目简介项目源码2.观察开源项目3.开源项目下载4.跑起来是第一步5.前后端分离项目固定套路6.如何找到一个开源项目1.如何分析开源项目 学习的方式&#xff1a; 不知道这个代码怎么来的这个代码跑不起来这个项目对我们有什么帮助&#xff0c;不会模…

设计公共API的六个注意事项

摘要&#xff1a;俗话说&#xff1a;“好东西就要贡献出来和大家一起分享”&#xff0c;尤其是在互联网业务高度发达的今天&#xff0c;如果你的创业公司提供了一项很酷的技术或者服务&#xff0c;并且其他用户也非常喜欢该产品&#xff0c;在这种情况下&#xff0c;最好的解决…

go 交叉编译

golang中windows交叉编译 env GOOSlinux GOARCHamd64 go build .打包镜像 FROM alpineMAINTAINER "congge"ADD ./casino_niuniu /usr/local/casino_niuniu/bin/casino_niuniu ADD ./templates /usr/loca/lcasino_niuniu/bin/templates ADD ./public /usr/local/casin…

P3193 [HNOI2008]GT考试

传送门 容易看出是道DP 考虑一位一位填数字 设 f [ i ] [ j ] 表示填到第 i 位&#xff0c;在不吉利串上匹配到第 j 位时不出现不吉利数字的方案数 设 g [ i ] [ j ] 表示不吉利串匹配到第 i 位&#xff0c;再添加一个数字&#xff0c;使串匹配到第 j 位的方案数 那么方程显然为…

SQLserver数据库反编译生成Hibernate实体类和映射文件

一、建立项目和sqlserver数据库 eclipse&#xff0c;我使用的版本是neon3 二、Data Source Explorer 选择OK 在data source Explorer的Database Connections 选择New 填写好General的连接信息 新建New Driver Definition 填写完选择OK 选择刚才的Drivers Test Connetion测试 N…