skanect kinect2.01.6支持kinect 2吗

3591人阅读
point cloud
在本文中将详细梳理使用Kinect进行3d扫描的过程,一共包含3种实现方法:processing编程实现、skanect软件实现、ReconstructMe软件实现。RecontructMe只能基于32位系统的驱动与kinect连接,而skanect与processing不论是32位还是64位都可以较好的兼容。
Comparison of ReconstructMe, KinectFusion and Skanect:
我们首先来看ReconstructMe:
ReconstructMe是基于32位系统的,但是在64位操作系统下仍旧使用32位的kinect驱动以及ReconstructMe。
ReconstructMe官方网址:
官网中针对不同的用户,有免费版以及收费版两种软件,具体下载地址为:
下载完成以后,先不要***,在***ReconstructMe之前我们首先需要***Kinect的驱动,具体步骤如下:
下载32位openni驱动包,下载地址:
Dropbox下载地址:
坚果云下载地址:
2.解压驱动包,首先***OpenNI,再然后是SensorKinect,然后是SensorPrimesense。(在***之前,一定要把原来kinect的驱动卸载掉)
3.全部***完成以后,重启
4.将你的Kinect连接上电脑,可以通过查看控制面板中的设备管理器,检查你的电脑是否已 经识别Kinect.
5.确认Kinect已经能和电脑通信之后,***下载好的ReconstructMe,***完以后运行目录中的Start ReconstructMe Scan OpenNI.bat,注意不是ReconstructMe.exe。然后根据提示进行操作即可
接下来是通过skanect进行3d扫描:
Skanect官方网址:
下载地址:(页面中含有详细的***步骤,但是一些链接已经失效,在后面的***步骤中含有其他下载链接)
详细***步骤:
下载skanect
下载kinect驱动包:
Dropbox下载地址:
坚果云下载地址:
3. 下载完驱动包以后,首先***OpenNI,然后是NITE,再然后是sensor(此文件也就是Primesense),最后是SensorKinect.
4.把kinect通过USB连接到电脑,检查控制面板中的设备管理器,判断是否已经连接成功。
5.***skanect并运行skanect.exe
1. 若基于32位操作系统,当使用skanect应下载之前ReconstructMe的所需的驱动,并附加NITE(具体***顺序如上所示):
dropbox下载:
坚果云下载:
2. 若运行skanect时,提示未查找到openni.dll则需根据你***的目录找到openni.dll并复制到system32中!)
最后一种方法是通过processing编程实现,对于使用过Processing或者java的人比较适用。虽然自己之前没有接触过java,但还是尝试了一下,欢迎大家一起折腾,具体步骤:
首先还是需要***Kinect的驱动(本人亲测为***64位的驱动,如果你使用的操作系统是32位的还需***NITE,因为后面调用processing库是需使用到)
Processing的simple-openni库下载及***:
(木有接触过processing的,百度一下即可找到,下载该软件并根据官网指示了解如何***库文件)
Processing代码:
普通浏览复制代码
import&processing.opengl.*;
import&SimpleOpenNI.*;
import&kinectOrbit.*;
KinectOrbit&myOrbit;
SimpleOpenNI&kinect;
String&turnTableAngle&=&&0&;
ArrayList&scanPoints&=&new&ArrayList();&
ArrayList&scanColors&=&new&ArrayList();&
ArrayList&objectPoints&=&new&ArrayList();&
ArrayList&objectColors&=&new&ArrayList();&
float&baseHeight&=&&&;&
float&modelWidth&=&&&&;
float&modelHeight&=&&&&;
PVector&axis&=&new&PVector(0,&baseHeight,&&&);
int&scanLines&=&200;
int&scanRes&=&1;
float[]&shotNumber&=&new&float[3];
int¤tShot&=&0;
public&void&setup()
&&size(800,&600,&OPENGL);
&&myOrbit&=&new&KinectOrbit(this,&0,&&kinect&);
&&myOrbit.drawCS(true);
&&myOrbit.drawGizmo(true);
&&myOrbit.setCSScale(&&);
&&myOrbit.drawGround(true);
&&kinect&=&new&SimpleOpenNI(this);
&&kinect.setMirror(false);
&&kinect.enableDepth();
&&kinect.enableRGB();
&&kinect.alternativeViewPointDepthToImage();
&&for&(int&i&=&0;&i&&&shotNumber.length;&i++)&
&&&&shotNumber&i&&=&i&*&(2&*&PI)&/&shotNumber.length;
public&void&draw()&
&&kinect.update();&
&&background(0);
&&myOrbit.pushOrbit(this);&
&&drawPointCloud(5);
&&updateObject(scanLines,&scanRes);
&&if(currentShot&0&¤tShot&4)
&&&&scan();
&&drawObjects();
&&drawBoundingBox();&
&&kinect.drawCamFrustum();&
&&myOrbit.popOrbit(this);&
void&drawPointCloud(int&steps)
&&int&index;
&&PVector&realWorldPoint;
&&stroke(255);
&&for&(int&y&=&0;&y&&&kinect.depthHeight();&y&+=&steps)
&&&&for&(int&x&=&0;&x&&&kinect.depthWidth();&x&+=&steps)
&&&&&&index&=&x&+&y&*&kinect.depthWidth();
&&&&&&realWorldPoint&=&kinect.depthMapRealWorld()[index];
&&&&&&stroke(150);
&&&&&&point(realWorldPoint.x,&realWorldPoint.y,&realWorldPoint.z);
void&drawObjects()
&&pushStyle();
&&strokeWeight(4);
&&for&(int&i&=&1;&i&&&objectPoints.size();&i++)
&&&&stroke(objectColors.get(i).x,&objectColors.get(i).y,&objectColors.get(i).z);
&&&&point(objectPoints.get(i).x,&objectPoints.get(i).y,&objectPoints.get(i).z&+&axis.z);
&&for&(int&i&=&1;&i&&&scanPoints.size();&i++)
&&&&stroke(scanColors.get(i).x,&scanColors.get(i).y,&scanColors.get(i).z);
&&&&point(scanPoints.get(i).x,&scanPoints.get(i).y,&scanPoints.get(i).z&+&axis.z);
&&popStyle();
void&drawBoundingBox()
&&stroke(255,&0,&0);
&&line(axis.x,&axis.y,&axis.z,&axis.x,&axis.y&+&100,&axis.z);
&&noFill();
&&pushMatrix();
&&translate(axis.x,&axis.x&+&baseHeight&+&modelHeight&/&2,&axis.z);
&&box(modelWidth,&modelHeight,&modelWidth);
&&popMatrix();
void&scan()
&&for&(PVector&v&:&scanPoints)
&&&&boolean&newPoint&=&true;
&&&&for&(PVector&w&:&objectPoints)
&&&&&&if&(v.dist(w)&&&1)
&&&&&&newPoint&=&false;
&&&&if&(newPoint)
&&&&&&objectPoints.add(v.get());
&&&&&&int&index&=&scanPoints.indexOf(v);
&&&&&&objectColors.add(scanColors.get(index).get());
void&updateObject(int&scanWidth,&int&step)
&&int&index;
&&PVector&realWorldPoint;
&&scanPoints.clear();
&&scanColors.clear();
&&float&angle=(currentShot-1)*2*PI/3;
&&rotateY(angle);
&&line(0,0,100,0);
&&int&xMin&=&(int)&(kinect.depthWidth()&/&2&-&scanWidth&/&2);
&&int&xMax&=&(int)&(kinect.depthWidth()&/&2&+&scanWidth&/&2);
&&for&(int&y&=&0;&y&&&kinect.depthHeight();&y&+=&step)
&&&&for&(int&x&=&xMin;&x&&&xMax;&x&+=&step)
&&&&&&index&=&x&+&(y&*&kinect.depthWidth());
&&&&&&realWorldPoint&=&kinect.depthMapRealWorld()[index];
&&&&&&color&pointCol&=&kinect.rgbImage().pixels[index];
&&&&&&if&(realWorldPoint.y&&&modelHeight&+&baseHeight&&&&realWorldPoint.y&&&baseHeight)
&&&&&&&&if&(abs(realWorldPoint.x&-&axis.x)&&&modelWidth&/&2)
&&&&&&&&{&
&&&&&&&&&&if&(realWorldPoint.z&&&axis.z&+&modelWidth&/&2&&&&realWorldPoint.z&&&axis.z&-modelWidth&/&2)
&&&&&&&&&&{&
&&&&&&&&&&&&PVector&rotatedPoint;
&&&&&&&&&&&&realWorldPoint.z&-=&axis.z;
&&&&&&&&&&&&realWorldPoint.x&-=&axis.x;
&&&&&&&&&&&&rotatedPoint&=&vecRotY(realWorldPoint,&angle);
&&&&&&&&&&&&scanPoints.add(rotatedPoint.get());
&&&&&&&&&&&&scanColors.add(new&PVector(red(pointCol),&green(pointCol),&blue(pointCol)));
&&&&&&&&&&}
PVector&vecRotY(PVector&vecIn,&float&phi)
&&PVector&rotatedVec&=&new&PVector();
&&rotatedVec.x&=&vecIn.x&*&cos(phi)&-&vecIn.z&*&sin(phi);
&&rotatedVec.z&=&vecIn.x&*&sin(phi)&+&vecIn.z&*&cos(phi);
&&rotatedVec.y&=&vecIn.y;
&&return&rotatedVec;
public&void&keyPressed()&{
&&switch(key)
&&&&case&'s':
&&&¤tShot++;
&&&&break;
&&&&case&'c':&
&&&&objectPoints.clear();
&&&&objectColors.clear();
&&&¤tshot=0;
&&&&break;
&&&&case&'e':&
&&&&exportPly('0');
&&&&break;
&&&&case&'+':&
&&&&scanLines++;
&&&&println(scanLines);
&&&&break;
&&&&case&'-':&
&&&&scanLines--;
&&&&println(scanLines);
&&&&break;
代码下载地址:
Dropbox下载:
坚果云下载:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:504126次
积分:5385
积分:5385
排名:第3957名
原创:30篇
转载:223篇
评论:35条
(1)(1)(3)(1)(4)(1)(16)(1)(2)(1)(3)(1)(1)(3)(2)(14)(3)(3)(4)(7)(6)(14)(1)(7)(7)(7)(1)(2)(2)(7)(12)(6)(22)(12)(10)(1)(1)(1)(1)(2)(34)(2)(1)(9)(2)(1)(8)(2)25.7 MB/简体中文/0
顶好评:(434)
踩坏评:(55)
Skanect是一款实用的三维的描工具,我们平常用的扫描软件都是二维的,这个三维的可以帮助我们扫描各种3维的模型,在使用之前需要配上相应的3维扫描器,比如华硕的Xtion或者微软的Kinect传感器等。有了他就可以轻松将人体、物件等扫描在三维模型导入到计算机软件中。
功能特点:
Skanect支持全彩色三维模型的扫描对象,一个人或一个房间从来没有如此的方便和实惠。 Skanect变换微软Kinect或华硕Xtion相机成一个超低价扫描仪在几分钟之内,能够创造出真实场景的三维网格。现在的3D扫描进入世界!
快速与现有技术不同,Skanect 可获取的 3D 场景信息的密集度高达每秒 30 帧。只需左右移动你的相机,就能快速捕捉到一个全景视图。简单易用使用 Skanect 进行 3D 扫描非常容易,Skanect 提供了一组预定义的场景模型,适用于大多数不同类型的场景扫描。此外,点几下鼠标你就可以将你扫描的 3D 图像分享给你的朋友,完全无需任何专业训练就可以开始进行 3D 扫描!成本极低Skanect 采用的是消费级的 3D 相机,因此这个 3D 扫描解决方案的硬件成本非常低。对于非商业用途的个人和爱好者,甚至可以下载的免费版本的 Skanect,包括免费的 Sculpteo 3D 打印和 Sketchfab 在线共享平台的免费使用权。商业用户也只需 99 欧元(不含***),包括一年的更新和无限制的出口许可。
提起Vuescan,相信很多朋友并不陌生,最初,它只是一款...
好用快递单打印软件是一款快递打印辅助工具,支持针式...
BarTender11是一款功能强大的条码打印和编辑工具,11...
兴达快递单打印软件专业版是一款专门为淘宝店家和企业...
飞豆快递单打印软件可以快速获取淘宝的货流信息从而打...
SmartVizor是一款专业的可变数据的条码标签打印软件,...
三维模型扫描描软件(Skanect Pro)下载 v1.8 最新版
121下载口号:伸出你我的手 — 分享!
121下载站破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。121所有软件经过严格***检测,保证不会有任何 病毒木马等信息,请大家放心使用;
大家在***的时候务必留意每一步的 N强烈推荐使用
下载本站软件以获取最佳的下载速度。
如果您觉得本站还不错, 以便下一次的访问 ^-^ ^-^
121下载QQ群:
① 5030944相关软件 /中文/ /中文/ /中文/ /中文/ /中文/ /中文/ /英文/ /中文/ /中文/ /中文/顶好评:50%踩坏评:50请简要描述您遇到的错误,我们将尽快予以修正。轮坛转帖HTML方式轮坛转帖UBB方式
22.8M/中文/5.9
520.8M/中文/4.3
500M/中文/3.3
132.4M/中文/1.4
498.0M/中文/1.9
119.5M/中文/8.2
149.9M/中文/5.4
ManCTL Skanect是一款功能强大的,Skanect配上华硕的Xtion或者微软的Kinect这样的传感器,就能够实现3D扫描,几分钟就可以完成一张全彩3D图。有了Skanect,给物品、房间甚至人,扫描一张全彩3D图变得非常廉价和简单。功能特色:快速与现有技术不同,Skanect 可获取的 3D 场景信息的密集度高达每秒 30 帧。只需左右移动你的相机,就能快速捕捉到一个全景视图。简单易用使用 Skanect 进行 3D 扫描非常容易,Skanect 提供了一组预定义的场景模型,适用于大多数不同类型的场景扫描。此外,点几下鼠标你就可以将你扫描的 3D 图像分享给你的朋友,完全无需任何专业训练就可以开始进行 3D 扫描!成本极低Skanect 采用的是消费级的 3D 相机,因此这个 3D 扫描解决方案的硬件成本非常低。对于非商业用途的个人和爱好者,甚至可以下载的免费版本的 Skanect,包括免费的 Sculpteo 3D 打印和 Sketchfab 在线共享平台的免费使用权。商业用户也只需 99 欧元(不含***),包括一年的更新和无限制的出口许可。Skanect教程:自己动手做一个3D人像设备:电脑一台(有好一点的显卡)Kinect(无论Xbox版还是Windows版)电动转盘(选配)软件:SkanectGeomagic(链接)用于修整导出的模型步骤:将Kinect链接到电脑上,打开Skanect软件&&&可以看到最上边有Prepare、Record等步骤在Prepare阶段,我们要做的是选择记录的类型,人像要选Body,BoundingBox是说你要记录的人体大小,如果是半身像,1*1*1米就可以了,点选Start进入下一步骤&&&现在我们就可以开始记录了,注意扫描的时候不要佩戴眼镜,还有最好带帽子等,因为头发的扫描效果不好。点击倒数按钮经过5秒倒数即可开始扫描&&&扫描的时候可以让朋友帮你拿着Kinect转,或者自己在凳子上转都可以,如果有转盘的话效果会更好,扫描环境最好在光线充足的地方,移动速度要缓慢而均匀。&扫描完成后可得到一个半身的无色立体图像,如果你觉得还行,就可以直接进入下一步,如果效果不是很好,可以选择用更高计算能力的的CPU或者GPU重新计算一遍。&&&这里可以选择快速的处理一下,也可以自己填孔,上色等,在此处做简单的处理后可以导出此模型了&&&选择导出Ply的格式,还有试用版是不支持导出高高精度模型的,只能导出一个很粗略的模型。用Geomagic打开这个PLY文件做简单的处理&在软件里边主要做的操作就是填孔,网格医生修复曲面等。因为这是临时扫描的,我就展示一个我已经做好的给大家看吧。头上那条毛巾是因为头发的扫描总是不好,就搞了条毛巾把头发盖住了。。。最后导出ply格式的模型,找3D打印商打印出来,5cm高的模型+软件的费用总共花下来不到300块钱。以下为打印出来的模型效果,说实话打印的精度还是一般,可能是我要的个头太小了。。。
安卓官方手机版
IOS官方手机版
3D扫描工具(Skanect) v1.5 官方最新版
下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。

参考资料

 

随机推荐