Hololens开发 识别二维码

1.ZXing.Net下载导入: ZXing.Net的下载地址: http://zxingnet.codeplex.com/ 解压后找到里面的unity文件夹,底下有3个文件,如下: 把这三个文件拖到unity里面 2.实现二维码识别: 这个借助插件很容易实现,网上有很多参考,Unity应用商店里也有提供的QRCode源码,下面是参考的一个比较简洁的写法,在这里对其稍作改动并加上注释: using UnityEngine; using System.Collections; using ZXing; using UnityEngine.UI; public class QRcode : MonoBehaviour { /// 包含RGBA public Color32[] data; /// 判断是否可以开始扫描 private bool isScan; /// canvas上的RawImage,显示相机捕捉到的图像 public RawImage cameraTexture; /// canvas上的Text,显示获取的二维码内部信息 public Text QRcodeText; /// 相机捕捉到的图像 private WebCamTexture webCameraTexture; /// ZXing中的方法,可读取二维码中的内容 private BarcodeReader barcodeReader; /// 计时,0.5s扫描一次 private float timer = 0; /// /// 初始化 /// /// IEnumerator Start() { barcodeReader = new BarcodeReader(); yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);//请求授权使用摄像头 if (Application.HasUserAuthorization(UserAuthorization.WebCam)) { WebCamDevice[] devices = WebCamTexture.devices;//获取摄像头设备 string devicename = devices[0].name; webCameraTexture = new WebCamTexture(devicename, 400, 300);//获取摄像头捕捉到的画面 cameraTexture.texture = webCameraTexture; webCameraTexture.Play(); isScan = true; } } /// /// 循环扫描,0.5秒扫描一次 /// void Update() { if (isScan) { timer += Time.deltaTime; if (timer > 0.5f) //0.5秒扫描一次 { StartCoroutine(ScanQRcode());//扫描 timer = 0; } } } IEnumerator ScanQRcode() { data = webCameraTexture.GetPixels32();//相机捕捉到的纹理 DecodeQR(webCameraTexture.width, webCameraTexture.height); yield return 0; } /// /// 识别二维码并显示其中包含的文字、URL等信息 /// ///相机捕捉到的纹理的宽度 ///相机捕捉到的纹理的高度 private void DecodeQR(int width, int height) { var br = barcodeReader.Decode(data, width, height); if (br != null) { QRcodeText.text = br.Text; } } } 把这段程序挂到 Main Camera 上,创建一个canvas,创建 RawImage 和 Text 并拖拽到脚本上,其中Text是用于显示二维码内部信息的,RawImage是用于显示摄像头捕捉到的画面的。 然后测试一下,二维码的功能到这里就实现了,经测试在PC和Android平台上都适用,接下来是导出HoloLens的部分。 第二步:导出到HoloLens平台 导出HoloLens的时候就不怎么友好了,报了很多错误,问题出在ZXing: 在hololens论坛上找到了关于这个问题的讨论: https://forums.hololens.com/discussion/3263/zxing-unity-barcode-dll-issue 下面这个网址提供了一种解决方案,使得导出时不会报错: https://forums.hololens.com/discussion/2966/qr-scan-in-uwp-with-usb2-0-webcam-and-kinect-2 它的解决方法是: 把导入的插件按照如下方式放置:其中  要复制两份,一份放在WSAPlayer文件夹下,另一份放在Plugins目录下 放在WSAPlayer目录下的  设置如下: 放在Plugins目录下的  设置如下: 再导出时不会报错。 但是,当在HoloLens中查看时,发现仍然无法识别二维码!!! 查找原因,原来HoloLens的相机根本就没有开启! 难道HoloLens的相机与PC和Android调用方法不同吗?看到下面这篇文章,发现是因为没有开启相机能力 http://www.cnblogs.com/mantgh/p/5667385.html 解决方法我直接截图过来了如下: 现在可以用HoloLens识别出二维码中的内容了! 可是我之前使用的是Main Camera,因此canvas中的内容无法跟着头盔移动,接下来导入HoloLensToolKit的包,换上HoloLens的相机,但是这个相机是倒着的,0.0没查为什么,简单粗暴地把我的canvas也到倒过来了。。。 现在在HoloLens上调试感觉好多了 最后把我简陋的界面 =_=(以前只有一个 RawImage 和一个 Text)美化一下,顺手借用了QRCode插件里面的图片,变成了下面这个样子: 当然,在Hololens里面看的时候,文字就是正着的了,而且黑色的背景也会被过滤掉。。。 —————————————————————————————————————————————————————— 虽然上面说的比较清楚了,但是如果还需要我的源码,可以去这里下载:http://download.csdn.net/detail/wwanrong/9921225 里面包含源码和导出后的部分(放在APP文件夹下),可以直接在Hololens上运行: 注意:如果想重新导出,请先删除里面的App和UWP文件夹!!否则会出现奇怪的错误,每次导出都会重新生成UWP --------------------- 本文来自 Annora-W 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/wwanrong/article/details/76589267?utm_source=copy

猜你喜欢

转载自blog.csdn.net/alone_ws/article/details/82803067
今日推荐