【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录

文章目录

    • 开发环境
    • 1.介绍
    • 2.调试记录
      • 2.1项目下载
      • 2.2生成HololensForCV解决方案
      • 2.3Unity项目部署
      • 2.4部署电脑端应用程序
      • 2.5调试

开发环境

  • win10专业版
  • Unity2019.4
  • VS2017(一定要用这个版本的VS!
  • Hololens2(打开开发者模式)
  • win10 SDK 10.0.19041.0

1.介绍

项目来源:YoloDetectionHoloLens-Unity
这是一个使用Hololens进行目标检测的项目。Hololens端负责采集和显示,电脑端处理图像,并标注,将标注框传回Holo端进行显示。
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第1张图片具体的项目发布流程,在项目中都有介绍,这篇文章主要记录一下作者没有提到的具体步骤和我在发布过程中遇到的错误,和解决方案。

发布大概流程如下:
1.将 "HoloLensForCV"项目生成解决方案,导出".dll"文件和".winmd"文件到Unity工程下
2.部署unity工程到Hololens2
3.将"ComputeOnDesktopYolo"项目部署在自己电脑上,生成名为ComputeOnDesktopYolo的可执行程序
4.将Holo和电脑处于同一局域网下,启动Holo程序,电脑端输入IP连接。

2.调试记录

2.1项目下载

Github传送门

从Github上下载整个项目的压缩包(不要用clone的方式)下载下来之后,右键压缩包>属性>勾选解除锁定
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第2张图片

解压之后发现 HololensForCV 这个文件夹是空的,因为这个文件夹的内容还要单独去下载。

点击进入下图所示HololensForCV项目文件
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第3张图片

采用同样的方式下载和解压(也要解除锁定),最好还是按照它原本的工程文件目录那样,将HololensForCV解压在如下图所示的位置,以免因为路径带来不必要的麻烦
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第4张图片
这样整个项目工程就下载好了。

这里有个注意点提一下,一旦在之前对项目进行部署等操作中出现了错误的话,就重新解压下载下来的这两个包,压缩包内的东西不会因为你误操作,或者是版本更改等等问题而改变。 有解决不了的,直接重开。重新解压一份,把之前解压的删除就行。

2.2生成HololensForCV解决方案

在项目介绍里面写到可以使用Prebuilt文件夹中已经预先生成的dll文件和winmd文件,但是为了保险起见还是自己生成。而且就算这里用了预先生成的文件,到后面也避免不了要自己再部署其他的项目,所以建议采用自己生成文件的方式

VS2017打开HololensForCV文件夹(后面的一串字符省略,下文同)下的HololensForCV.sln文件。
注意这里一定要用VS2017,我刚开始用的2019版本,生成解决方案时各种出错,也没找到解决办法,(windowsSDK可以使用更高的版本,但是一定要用VS2017.)
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第5张图片
打开文件之后先重定结局方案目标 来兼容自己的SDK版本
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第6张图片
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第7张图片
接下来打开 工具>Nuget包管理器>管理解决方案的nuget包
会发现存在一下两个包
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第8张图片下面我们需要再安装一个OpenCV.Hololens包 给三个项目,分别是 sample下的HololensForCV、Shared下的ComputeOnDesktopYoloOpenCVHelpers
有两种方法:
方法1:
你可以按照项目里面提供的方式来安装nuget包,打开nuget包控制台输入下面的指令,需要将指令里面的地址换成文件的绝对地址
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第9张图片
在这里插入图片描述在这里插入图片描述
那个nuget包就在总项目这个文件下【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第10张图片
方法2:
这里我提供另一种安装方式,避免有些人因为路径出错。
按照下图添加一个本地的nuget包源,将地址换成下载下来的项目地址
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第11张图片点击浏览,将程序包切换成刚刚添加的源
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第12张图片在右边勾选刚刚说的三个项目点击安装(我这里之前已经安装过了,你安装成功之后再“版本”那一栏会后版本号)
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第13张图片这样就将OpenCV.Hololens nuget包安装成功了。

将HololensForCV项目设为启动项目。选择release ARM (如果你是1代的眼镜,这里选择X86)生成项目,然后就生成了文件
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第14张图片
几个关键点:版本VS2017、重订解决方案、导入nuget包(两种方法)、生成解决方案

2.3Unity项目部署

将生成的所有文件复制一份到作者提到的文件夹下YoloDetectionHoloLensUnity 项目的 Assets->Plugins->x86/ARM 文件夹
这里如果按照作者所说的只复制dll和winmd两个文件的话,unity中会报错缺少命名空间,所以需要将这几个生成的文件都复制过去就解决了

然后打开Unity项目,转换平台为UWP
这里需要将导入的文件做一些修改
这是作者文中没有提到的
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第15张图片按照图中所示的,将其中的两个文件都改成右边的状态,然后点击应用(如果你是一代眼镜就将ARM换成X86)。

然后打开场景
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第16张图片
将这个脚本中的IP换成同一局域网下你电脑的IP。查看方式如下:
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第17张图片
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第18张图片
接下来如果直接build的话,会有证书过期的错误。
打开player setting>Other Settings >Certificate
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第19张图片点击上图所示的证书,来取消证书挂载过期的证书。
然后进行Build,生成解决方案部署到Holo里面(部署过程不具体说明)

几个关键点:平台转换,dll和winmd文件的设置,IP地址修改,证书过期。

2.4部署电脑端应用程序

打开HololensForCV.sln文件,将ComputeOnDesktopYolo项目设为启动项目

因为之前已经给该项目导入了nuget包,所以这里就不用重复导入了,直接部署就行。
在这里插入图片描述
像上图这样设置 Release或者Debugx64(电脑是64位)。然后部署即可。

部署过程中可能出现float转int类型的警告,可以忽略

部署之后电脑会生成一个应用程序。
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第20张图片
之后就可以关掉Unity和VS等等,不用一直挂着。

打开应用程序,是一个这样的界面
【Hololens2目标检测】YoloDetectionHoloLens-Unity项目发布记录_第21张图片这样就算是部署成功了

2.5调试

先打开Holo端的应用,然后按照上面的文字提示进行double tap手势,中间会提示申请摄像头权限。
然后电脑端程序输入Holo的IP地址,点击connect,就能收到Holo传来的视频。
按照Holo的提示,再进行double AirTap手势,Holo能显示标注框。由于摄像头占用,这里就不展示成果图片了

你可能感兴趣的:(unity,hololens)