Hello everyone.
The Mixed Reality Forums here are no longer being used or maintained.
There are a few other places we would like to direct you to for support, both from Microsoft and from the community.
The first way we want to connect with you is our mixed reality developer program, which you can sign up for at https://aka.ms/IWantMR.
For technical questions, please use Stack Overflow, and tag your questions using either hololens or windows-mixed-reality.
If you want to join in discussions, please do so in the HoloDevelopers Slack, which you can join by going to https://aka.ms/holodevelopers, or in our Microsoft Tech Communities forums at https://techcommunity.microsoft.com/t5/mixed-reality/ct-p/MicrosoftMixedReality.
And always feel free to hit us up on Twitter @MxdRealityDev.
The Mixed Reality Forums here are no longer being used or maintained.
There are a few other places we would like to direct you to for support, both from Microsoft and from the community.
The first way we want to connect with you is our mixed reality developer program, which you can sign up for at https://aka.ms/IWantMR.
For technical questions, please use Stack Overflow, and tag your questions using either hololens or windows-mixed-reality.
If you want to join in discussions, please do so in the HoloDevelopers Slack, which you can join by going to https://aka.ms/holodevelopers, or in our Microsoft Tech Communities forums at https://techcommunity.microsoft.com/t5/mixed-reality/ct-p/MicrosoftMixedReality.
And always feel free to hit us up on Twitter @MxdRealityDev.
Barcode/QR code detection
Hi,
I will be working on a project where QR/barcode scanning is needed. I used barcode scanning library before (on Windows Phone). But, the problem I see is that, when you use HoloLens, how do you even know where the barcodes are.
In mobile apps, typically the device is in close proximity to the barcode image. (A typical app displays a "window" through which a barcode can be viewed/read, which constrains the barcode reading space.)
In a use case I'm thinking about, that may not be generally feasible. A user wearing HoloLens may view a barcode(s) in a distance, and the app needs to recognize it as a barcode first, and subsequently scan it.
Is there a way to accomplish this without resorting on a full-blown CV approach?
Any thoughts?
1
Answers
See this thread for a relevant discussion Is it possible to "see" other apps and use their information for my own?
Have a look at QR software in Unity Asset Store, there is a lot, try and avoid samples with *.dll files as these cannot transfer to HoloLens also Windows Universal Program Examples library has sample barcode and OCR reader.
The hardest part and killer is Locate Camera code and forcing it to a specific place. Trying to make it focus did not work on webcam or HoloLens
If you're using Unity and you find a good 1D and 2D barcode solution, or roll your own, let me know. I haven't progressed to that point in my work application yet, but it would be a time saver. If you roll your own I can probably even workout a payment.
The best bet is this one from the Unity asset store:
https://www.assetstore.unity3d.com/en/#!/content/16941
Supposedly is non-native and works with UWP.
In regards to your main question, a good library usually allows you to disable all barcode types you're not interested scanning, these can help reduce false positives. From here, you can try an optimized brute force method. That is, grab maybe 2-5 frames a second, attempt to process them via the barcode library, if you get any results back, verify they somewhat meet the expected scan data format, if so good, if not reject. Then you can only enable this scanning in contexts where it needs to be. I am going to experiment with this method, as it is brute force, but may be cheaper than complex CV computations.
In regards to CV, luckily the Hololens provides some data already that is normally computationally complex. That is, you have the spatial data that you can use for doing perspective correction on the grabbed frames. Most barcode libraries either do little perspective correction or are expensive to do it. You should be able to map a pixel/texel to the spatial mesh, maybe average a few points due to the meshes lower resolution, and correct the frame for barcode processing.
Again, I haven't got around to this portion yet, so if you develop something I'd be highly interested in it.
@Jarrod1937 @holodoctor How about this free code Generate Barcode and QR code in Windows Universal app
Hi @Jarrod1937 @Jimbohalo10 Thanks for the input. My primary concern was how to locate a barcode from an unmarked scene. After giving some thought, I realized it might be a bit too ambitious at this point to try to do that. (For example, a barcode image might be at an angle at a distance.) I am still thinking about it, but for now, instead, I will just direct the user to view a barcode in a particular way so that the app can easily identify/detect the barcode image. Not ideal, but definitely much easier.
I am just starting my HoloLens dev, and I haven't tried this LocatableCamera API yet, but I did use one of those barcode scanning libraries on WinRT before (WP8.1 not UWP). Either ZXing.Net or ZXing.Net.Mobile, cannot remember at this point. Thanks for the pointers to Barcode libraries on Asset Store. I quickly looked at some of them, and they all say they support iOS and Android. But, no explicit mention of Universal Windows.
In any case, I'll definitely keep you guys posted if there is any development.
Thanks,
~h
Yep, I've used ZXing before, it's not too bad though requires a bit more tweaking than a commercial library (but it's free!). I primarily need to scan 1D barcodes due to the Hololens fitting in with our current workflow and more redundancy in industrial environments. QR codes have some parity I believe but 1D basically has the entire vertical region as redundancy, which helps read even after dust/dirt/scratches/tearing...etc.
The only thing is that I want to avoid figuring out how to program a Unity plugin that integrates the barcode reading, so I can more quickly get out a prototype. However, I will if need be.
Just want to make sure you read this in the link I provided, "WP8, Windows Universal Apps," most of the assets target Android and IOS, but that one also targets Windows. I definitely look forward to your progress.
@Jarrod1937 Yes, it does mention Windows Universal. I'll give it a try. Thanks, ~h
@holodoctor : Did you have any luck with this? I'm also interested in finding a QR or barcode reading solution for a HoloLens app. However I have no experience with QR or barcode reading in the past, so I will be starting fresh. Did the Unity plugin that was recommended above work out for you or did you find another solution?
This was not that long ago (only a few days). I would give him a chance to work on it first, haha. I think barcode scanning is common, so hopefully the community will share as they develop. I'm still working on some software for Win CE6 (some outdated mobile scanners...), after that I'll be putting more time forward toward the Hololens. If some solutions aren't available at that time, I will certainly share what I find and/or develop.
@Monkey @Jarrod1937 I haven't had a chance to work on it yet (It's been "only a few days" after all
), but I will keep you guys posted. ~h
Is any progress with barcode reading? I'm interested too in scanning 1D&2D barcodes by using HL.
@Jarrod1937, if you need to do proof of concept, you can look at some wearable on finger bluetooth scanner which can be paired with HoloLense. I understand that it's not perfect solution and it's little bit out of current topic, but it can be workaround for you.
I'm currently working on an app using AR Toolkit for HoloLens. This means I am able to locate and track 2D markers using the camera. I only tried it with square markers but I guess using it with barcodes would be quite similar: https://artoolkit.org/
Owner of the startup Information Experience Sweden AB, http://informationexperience.se
Information Management, SharePoint, CAD, Visualization for AEC. Architecting and developing solutions for HoloLens, combined with AR Toolkit, Kinect, RealSense, Leap Motion.
I've tried most of the pre-existing barcode plugins on the Unity store but none of them have worked for me so far. They work fine if I deploy to a smartphone but I'm having trouble getting them to work on the HoloLens. I'm not sure if I'm implementing it wrong or something, but so far I've been unsuccessful getting a basic barcode reader to work on the HoloLens. Has anyone else had more success yet?
@Generalkidd did you try this plugin https://www.assetstore.unity3d.com/en/#!/content/56083 ? looks promissing
@Anders could you add some clues how to use artoolkit marker detection in HoloLense?
Hi,
The existing dll:s in AR Toolkit didn't work for me, the error messages weren't very helpful for me but I think they are only compatible with 8.1. Basically I recompiled the toolkit from scratch, including the libraries it depended on, such as libjpeg.
When you have the toolkit up and running, you also need to adapt it for Hololens positioning and calibrate it, otherwise it won't work too well.
Owner of the startup Information Experience Sweden AB, http://informationexperience.se
Information Management, SharePoint, CAD, Visualization for AEC. Architecting and developing solutions for HoloLens, combined with AR Toolkit, Kinect, RealSense, Leap Motion.
I am starting my Master Thesis project and I am looking for ways to make Hololens detect a stationary object and then place a hologram on that object. Your work sounds very applicable to what I want to accomplish. My Thesis does not focus on the technical aspects but rather on the testing/verifaction of the implementation I am about to create Would you care to share your work in any way Anders? We could talk more in PM
@wilfal Check out Vuforia... it was released for hololens last week: https://developer.vuforia.com/downloads/beta
It can do VuMarks (which are QRCodes) and images. It won't be able to do stationary object recognition though. But perhaps you could put a VuMark on your object?
Taqtile
I believe the HoloToolkit also has april tags (QR codes) built into it.
Stephen Hodgson
Microsoft HoloLens Agency Readiness Program
Virtual Solutions Developer at Saab
HoloToolkit-Unity Moderator
Has anyone implemented QR code reading successfully? If so, would you be willing to share code/tutorial?
I am also looking for way to scan QR/Barcode using hololens. Please provide sample code if anybody has been succeded to do so.
I did make a similar project that works in HoloLens Emulator and UWP executable for webcams
QR Scan in UWP with USB2.0 Webcam and Kinect 2
Kinect 2 is the nearest relative to HoloLens.
Although there is Locate Camera in Unity . You only get static input as one picture. Even in the new Windows.MediaCapture library the HoloLens camera does not seem to be able to stream like a webcam. HoloLens camera is reading Mixed Reality and Augmented Reality.
Hi @holodoctor @DocStrange @Jarrod1937 @stephenhodgson et all,
There is a new app in the Windows store , which has the compatible with HoloLens sign.
It would be great if someone could test this kwiQR on a real HoloLens device
The author sometimes works for Microsoft UK https://twitter.com/mtaulty and the app is FREE!
Yes, it does work on Hololens. The app is currently processing around 6-8 frames per second but does scan from a pretty far distance. This leads me to assume they aren't using the webcam and are rather taking async photos then processing those. I'm definitely interested in what the used to create this as well.
Hi, I'm new to the forum and I'm currently working on a HoloLens project which involved Qr code detection. I achieved to use ZXing library with the HoloLens, I used a class to take a capture from the camera and then detect the code in it. So no continuous detection, but concerning the QR code reading what I did do the job quite easily.
For that mean I built a class "QRDecoder" which is used while taking a capture with a CaptureManager class (like in this locatable Camera tutorial https://developer.microsoft.com/en-us/windows/holographic/locatable_camera_in_unity).
Here is the CaptureManager class:
`
using UnityEngine;
using UnityEngine.VR.WSA.WebCam;
using System.Linq;
using System.Collections.Generic;
public class CaptureManager {
}
`
Here is the QRDecoder class:
`using UnityEngine;
using System;
using ZXing;
public class QRDecoder : MonoBehaviour {
if !UNITY_EDITOR
}`
I hope it will help, this is certainly improvable but atm it's working well.
The kwiQR app mentioned above is a fairly basic one that I built for Windows 8.0 back in 2012 and then ported to Windows 10 (PC and Phone) last year. I made notes about doing that port at the time and you can see how the camera capture code works (sitting on top of ZXing) in this blog post and it essentially takes video preview frames from the camera.
I've yet to try this app on HoloLens so glad to hear if it works but it sounds like the processing rate is quite slow. If it helps someone to have the code for what I have then I'm happy to share it (mail me and let me know) and I could probably turn it into a library although I haven't thought about it from the point of view of Unity at all (yet! :-)).
Please let us know when you have try on the HoloLens Device, sounds good to access a solution with better performance
.
Hi @mtaulty Its an excellent write-up, good videos as well. The adding of voice control is a brilliant idea. This gets round many of the problems of having a menu and buttons
Hi, perhaps someone here knows why I'm getting a FileLoadException when trying to use ZXing on a HoloLens device? The error I get is that it can't load file or assembly system.core version 3.5.0.0. I'm using the unity build of the .NET ZXing project with .NET 3.5 as a target platform.