Opencv Libfreenect错误的深度贴图
在我的项目中,我一直在使用OpenNI+PrimeSense+NiTE和OpenCV来根据对象的距离分割对象。然而,我打算在NVIDIA Jetson TX1板上部署它,它无法编译带有OpenCV的OpenNI+PrimeSense+NiTE。 我以libfreenect结尾。然而,libfreenect提供的深度图是非常非常错误的。我将分享一些例子 以下是OpenNI的工作深度图: libfreenect错误的深度贴图如下所示:Opencv Libfreenect错误的深度贴图,opencv,kinect,openni,openkinect,libfreenect2,Opencv,Kinect,Openni,Openkinect,Libfreenect2,在我的项目中,我一直在使用OpenNI+PrimeSense+NiTE和OpenCV来根据对象的距离分割对象。然而,我打算在NVIDIA Jetson TX1板上部署它,它无法编译带有OpenCV的OpenNI+PrimeSense+NiTE。 我以libfreenect结尾。然而,libfreenect提供的深度图是非常非常错误的。我将分享一些例子 以下是OpenNI的工作深度图: libfreenect错误的深度贴图如下所示: 我在OpenKEnter网站上的默认C++包装上建立了我的LI
我在OpenKEnter网站上的默认C++包装上建立了我的LIFFIENECT代码。
有人能帮我吗?非常感谢。它看起来像深度数据的不同映射 您可以尝试将libfreenect数据放入cv::Mat并缩放:
const float scaleFactor = 0.05f;
depth.convertTo(depthMat8UC1, CV_8UC1, scaleFactor);
imshow("depth gray",depthMat8UC1);
您还可以在Jetson TK1上查看本文和。
一旦你有了OpenNI设置并开始工作,你应该能够从源代码中编译OpenCV,启用和
和cmake
。之后,您应该能够直接在OpenCV中获取深度数据:
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
using namespace cv;
using namespace std;
const float scaleFactor = 0.05f;
int main(){
cout << "opening device(s)" << endl;
VideoCapture sensor;
sensor.open(CV_CAP_OPENNI);
if( !sensor.isOpened() ){
cout << "Can not open capture object 1." << endl;
return -1;
}
for(;;){
Mat depth,depthScaled;
if( !sensor.grab() ){
cout << "Sensor1 can not grab images." << endl;
return -1;
}else if( sensor.retrieve( depth, CV_CAP_OPENNI_DEPTH_MAP ) ) {
depth.convertTo(depthScaled, CV_8UC1, scaleFactor);
imshow("depth",depth);
imshow("depth scaled",depthScaled);
}
if( waitKey( 30 ) == 27 ) break;
}
}
#包括“opencv2/core/core.hpp”
#包括“opencv2/highgui/highgui.hpp”
#包括“opencv2/imgproc/imgproc.hpp”
#包括
使用名称空间cv;
使用名称空间std;
常量浮点比例因子=0.05f;
int main(){
cout嗯,对于那些在ARM或AARCH64体系结构(主要是Jetson TX1)上使用libfreenect的人来说,因为OpenNI和SensorKinect在构建上存在问题,所以我对OpenNI和SensorKinect源代码进行了一些调整,以运行AARCH64并避免使用libfreenect
链接:及