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.pswp.cn/news/450850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450850.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

帶數據庫的智能合約

編寫使用數據庫的智能合約 前面一直在搗鼓EOS網絡搭建的相關東西。然而今天比較不走運的是&#xff0c;興致勃勃的把源碼版本升到4.0&#xff0c;在編譯的時候如我所猜想的出現了一系列問題&#xff0c;正一籌莫展的時候&#xff0c;導師突然問了我一個關于合約如何操作數據庫的…

沒有完美的軟件:編程永遠不容易

摘要&#xff1a;很多人想用十全十美來修飾一樣東西&#xff0c;比如軟件&#xff0c;對于客戶來說&#xff0c;當然希望他們的軟件能做到完美。雖然很多專家說利用一些規范可以讓軟件達到更好&#xff01;但是在現實開發中&#xff0c;真的會有那么完美的軟件嗎&#xff1f; 最…

Eclipse斷點調試出現Source not found

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我的情況是和網上說的都不一樣&#xff0c;我真的也沒有想到這么坑&#xff0c; 我居然無意寫了一個死循環&#xff0c;dao/mapper調sql…

Memory Compression這到底是個什么東西?

Memory Compression這到底是個什么東西&#xff1f; Memory Compression這個進程&#xff0c;經過我的查詢說是內存壓縮功能&#xff0c;作用是壓縮內存讓內存占用更低&#xff0c;但是為什么這個進程瘋狂占用我的內存&#xff0c;我用的Win10 8G&#xff0c;通過資源監視器查看…

MySQL 5.6 for Windows 解壓縮版配置安裝

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 MySQL是一個小巧玲瓏但功能強大的數據庫&#xff0c;目前十分流行。但是官網給出的安裝包有兩種格式&#xff0c;一個是msi格式&#xf…

safari的一些問題

1、圖片過大時&#xff0c;在webview中是不會加載顯示的。2、如果是通過一個地址返回的base64數據給image&#xff0c;記住要在后臺進行base64_decode解析數據&#xff0c;這樣才是真實的圖片數據&#xff0c;后臺保存數據的時候不要保存"data:image/png;base64,"這一…

代碼審查“思維導圖”

摘要&#xff1a;隨著人們對軟件質量要求的不斷提高&#xff0c;軟件開發的每一個環節都應該得到十足的重視&#xff0c;俗話說&#xff1a;“細節決定成敗”&#xff0c;就此&#xff0c;本文提供了一個代碼審查“思維導圖”&#xff0c;希望對所有碼農們有所幫助。 代碼審查&…

thinkCMF----導航高亮顯示

導航高亮顯示&#xff0c;有多種方法&#xff0c;這里給出一個簡單的表示下&#xff1a; <a href"__ROOT__"><span class"text db">網站首頁</span><span class"eng db">HOME</span> </a> …

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;俗話說…

7. Oracle數據加載和卸載

在日常工作中&#xff1b;經常會遇到這樣的需求&#xff1a; Oracle 數據表跟文本或者文件格式進行交互&#xff1b;即將指定文件內容導入對應的 Oracle 數據表中&#xff1b;或者從 Oracle 數據表導出。其他數據庫中的表跟Oracle數據庫進行交互。若是少量數據&#xff1b;可選…

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集中出現了一種石頭剪刀布的升級版游戲。 升級版游戲在傳統的石頭剪刀布游戲的基礎上,增加了兩個新手勢: 斯波克:《星際迷航》主角之…

初識react(二) 實現一個簡版的html+redux.js的demo

回顧 初識react(一) 揭開jsx語法和虛擬DOM面紗初識react(二) 實現一個簡版的htmlredux.js的demo初識react(三)在 react中使用redux來實現簡版計數器初識react(四) react中異步解決方案之 redux-saga初識react(五) 數據流終極解決方案 dva(零配置)前言 首先糾正個誤區&#xff0…

12個有趣的C語言面試題

摘要&#xff1a;12個C語言面試題&#xff0c;涉及指針、進程、運算、結構體、函數、內存&#xff0c;看看你能做出幾個&#xff01; 1.gets()函數 問&#xff1a;請找出下面代碼里的問題&#xff1a; #include<stdio.h> int main(void) { char buff[10]; memset…

超全Typora快速入門

文章目錄一.Typora快速入門1.代碼塊2.標題3.字體4.引用5.水平分割線6.圖片插入7.超鏈接8.列表9.表格10.任務列表11.數學表達式12.生成目錄13.表情符號14.定義腳注15.文件導出16.主題修改17.修改主題背景圖片18.設置背景透明度19.Typora 插入圖片調整大小20.字體和顏色21.頁內跳…

聊聊畢業設計系列 --- 系統實現

效果展示 github moment-server github地址 moment github地址 moment-manage github地址 articles 聊聊畢業設計系列 --- 項目介紹 聊聊畢業設計系列 --- 系統實現 前言 在上一篇文章中&#xff0c;主要是對項目做了介紹&#xff0c;并且對系統分析和系統設計做了大概的介紹。…