项目来源:YoloDetectionHoloLens-Unity
这是一个使用Hololens进行目标检测的项目。Hololens端负责采集和显示,电脑端处理图像,并标注,将标注框传回Holo端进行显示。
具体的项目发布流程,在项目中都有介绍,这篇文章主要记录一下作者没有提到的具体步骤和我在发布过程中遇到的错误,和解决方案。
发布大概流程如下:
1.将 "HoloLensForCV"
项目生成解决方案,导出".dll"文件和".winmd"
文件到Unity工程下
2.部署unity工程到Hololens2
3.将"ComputeOnDesktopYolo"
项目部署在自己电脑上,生成名为ComputeOnDesktopYolo
的可执行程序
4.将Holo和电脑处于同一局域网下,启动Holo程序,电脑端输入IP连接。
Github传送门
从Github上下载整个项目的压缩包(不要用clone的方式)下载下来之后,右键压缩包>属性>勾选解除锁定
解压之后发现 HololensForCV
这个文件夹是空的,因为这个文件夹的内容还要单独去下载。
采用同样的方式下载和解压(也要解除锁定),最好还是按照它原本的工程文件目录那样,将HololensForCV解压在如下图所示的位置,以免因为路径带来不必要的麻烦
这样整个项目工程就下载好了。
这里有个注意点提一下,一旦在之前对项目进行部署等操作中出现了错误的话,就重新解压下载下来的这两个包,压缩包内的东西不会因为你误操作,或者是版本更改等等问题而改变。 有解决不了的,直接重开。重新解压一份,把之前解压的删除就行。
在项目介绍里面写到可以使用Prebuilt文件夹
中已经预先生成的dll文件和winmd文件
,但是为了保险起见还是自己生成。而且就算这里用了预先生成的文件,到后面也避免不了要自己再部署其他的项目,所以建议采用自己生成文件的方式。
用VS2017打开HololensForCV文件夹
(后面的一串字符省略,下文同)下的HololensForCV.sln
文件。
注意这里一定要用VS2017,我刚开始用的2019版本,生成解决方案时各种出错,也没找到解决办法,(windowsSDK可以使用更高的版本,但是一定要用VS2017.)
打开文件之后先重定结局方案目标
来兼容自己的SDK版本
接下来打开 工具>Nuget包管理器>管理解决方案的nuget包
会发现存在一下两个包
下面我们需要再安装一个OpenCV.Hololens包
给三个项目,分别是 sample下的HololensForCV
、Shared下的ComputeOnDesktopYolo
和OpenCVHelpers
有两种方法:
方法1:
你可以按照项目里面提供的方式来安装nuget包,打开nuget包控制台输入下面的指令,需要将指令里面的地址换成文件的绝对地址
那个nuget包就在总项目这个文件下
方法2:
这里我提供另一种安装方式,避免有些人因为路径出错。
按照下图添加一个本地的nuget包源,将地址换成下载下来的项目地址
点击浏览,将程序包切换成刚刚添加的源
在右边勾选刚刚说的三个项目点击安装(我这里之前已经安装过了,你安装成功之后再“版本”那一栏会后版本号)
这样就将OpenCV.Hololens nuget包
安装成功了。
将HololensForCV项目设为启动项目。选择release ARM (如果你是1代的眼镜,这里选择X86)生成项目,然后就生成了文件
几个关键点:版本VS2017、重订解决方案、导入nuget包(两种方法)、生成解决方案
将生成的所有文件复制一份到作者提到的文件夹下YoloDetectionHoloLensUnity
项目的 Assets->Plugins->x86/ARM 文件夹
。
这里如果按照作者所说的只复制dll和winmd两个文件的话,unity中会报错缺少命名空间,所以需要将这几个生成的文件都复制过去就解决了
然后打开Unity项目,转换平台为UWP
这里需要将导入的文件做一些修改
这是作者文中没有提到的
按照图中所示的,将其中的两个文件都改成右边的状态,然后点击应用(如果你是一代眼镜就将ARM换成X86)。
然后打开场景
将这个脚本中的IP换成同一局域网下你电脑的IP。查看方式如下:
接下来如果直接build的话,会有证书过期的错误。
打开player setting>Other Settings >Certificate
点击上图所示的证书,来取消证书挂载过期的证书。
然后进行Build,生成解决方案部署到Holo里面(部署过程不具体说明)
几个关键点:平台转换,dll和winmd文件的设置,IP地址修改,证书过期。
打开HololensForCV.sln
文件,将ComputeOnDesktopYolo
项目设为启动项目
因为之前已经给该项目导入了nuget包,所以这里就不用重复导入了,直接部署就行。
像上图这样设置 Release或者Debug
,x64
(电脑是64位)。然后部署即可。
部署过程中可能出现float转int类型的警告,可以忽略
部署之后电脑会生成一个应用程序。
之后就可以关掉Unity和VS等等,不用一直挂着。
先打开Holo端的应用,然后按照上面的文字提示进行double tap手势,中间会提示申请摄像头权限。
然后电脑端程序输入Holo的IP地址,点击connect,就能收到Holo传来的视频。
按照Holo的提示,再进行double AirTap手势,Holo能显示标注框。由于摄像头占用,这里就不展示成果图片了