2017-02-17 4 views
1

Ich versuche, ein einfaches Vuforia-Bild von HoloLens zu einer Funktion zu bekommen, die QRCodes in Text konvertiert (via ZXing). Ich habe die ZXing-Bibliothek importiert und beim Durchlesen ähnlicher Implementierungen festgestellt, dass die folgende Implementierung in ihrer einfachsten Form ist.einfache Vuforia zu HoloLens

Es ist eigentlich ganz einfach, sind die Schritte

  1. Start durch den Barcode-Objekt
  2. die Kamera
  3. der QRcode Text Wert senden zu trösten

    using UnityEngine; 
    using System; 
    using System.Collections; 
    using UnityEngine.UI; 
    using Vuforia; 
    
    using ZXing; 
    
    public class HelloWorldV2 : MonoBehaviour 
    { 
    private bool cameraInitialized; 
    
    private BarcodeReader barReader; 
    
    void Start() 
    { 
        GameObject sometext = GameObject.Find("Text"); 
        Text txt = sometext.GetComponent<Text>(); 
    
        txt.text = "Right before BarReader"; 
        barReader = new BarcodeReader(); 
        txt.text = "Right after BarReader"; //NEVER GETS HERE! 
    
        StartCoroutine(InitializeCamera()); 
    } 
    
    private IEnumerator InitializeCamera() 
    { 
        // Waiting a little seem to avoid the Vuforia's crashes. 
        yield return new WaitForSeconds(1.25f); 
    
        var isFrameFormatSet = CameraDevice.Instance.SetFrameFormat(Vuforia.Image.PIXEL_FORMAT.RGB888, true); 
        Debug.Log(String.Format("FormatSet : {0}", isFrameFormatSet)); 
    
        // Force autofocus. 
        var isAutoFocus = CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO); 
        if (!isAutoFocus) 
        { 
         CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_NORMAL); 
        } 
        Debug.Log(String.Format("AutoFocus : {0}", isAutoFocus)); 
        cameraInitialized = true; 
    } 
    
    private void Update() 
    { 
        if (cameraInitialized) 
        { 
         try 
         { 
          var cameraFeed = CameraDevice.Instance.GetCameraImage(Vuforia.Image.PIXEL_FORMAT.RGB888); 
          if (cameraFeed == null) 
          { 
           return; 
          } 
          var data = barReader.Decode(cameraFeed.Pixels, cameraFeed.BufferWidth, cameraFeed.BufferHeight, RGBLuminanceSource.BitmapFormat.RGB24); 
          if (data != null) 
          { 
           // QRCode detected. 
           Debug.Log(data.Text); 
          } 
          else 
          { 
           Debug.Log("No QR code detected !"); 
          } 
         } 
         catch (Exception e) 
         { 
          Debug.LogError(e.Message); 
         } 
        } 
    } 
    } 
    
initialisieren Einrichtung

So tritt das Problem einfach auf den Konstruktor Aufruf t o BarcodeReader(). Ich bin mir nicht sicher, wie das passieren würde. Warum sollte ein einfacher Konstruktoraufruf fehlschlagen?

Der einzige andere Hinweis, den ich bin von einer Debug-Sitzung bekommen ist folgende:

FileLoadException: Could not load file or assembly 'System.Core, 
Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of 
its dependencies. The located assembly's manifest definition does not match 
the assembly reference. (Exception from HRESULT: 0x80131040) 
    at ZXing.BarcodeReader..ctor() 
    at HelloWorldV2.Start() 

Kann jemand das Problem durch eine Emulator Visual Studio replizieren? (Beachten Sie, funktioniert dies in der Einheit, wenn der FrameFormats ersetzt in Graustufen

Antwort

1

Das ist weil Sie die falsche DLL-Datei verwendet haben (was bei Hololens nicht unterstützt wird) Versuchen Sie die winmd-Datei in ZXing.net