Я пытаюсь собрать сканер BarCode в Unity с использованием библиотеки Vuforia ARCamera и zxing.net. Я создал это приложение с кодом ниже, и он декодирует только числовые штрих-коды. Я ничего не вижу для буквенных штрих-кодов.
Я создал новый проект Unity, добавил ARCamera и TextBox на Canvas. Я пытаюсь показать декодированный штрих-код внутри textBox.
using UnityEngine;
using UnityEngine.UI;
using System;
using System.Collections;
using System.Collections.Generic;
using Vuforia;
using System.Threading;
using ZXing;
using ZXing.QrCode;
using ZXing.Common;
public class CameraImageAccess : MonoBehaviour
{
private bool cameraInitialized;
private readonly PIXEL_FORMAT mPixelFormat = PIXEL_FORMAT.GRAYSCALE;
public Transform DisplayCode1;
public int frameCount;
void Start()
{
barCodeReader = new BarcodeReader();
StartCoroutine(InitializeCamera());
DisplayCode1 = GameObject.Find("DisplayCode").transform;
}
private IEnumerator InitializeCamera()
{
// Waiting a little seem to avoid the Vuforia's crashes.
yield return new WaitForSeconds(1.25f);
var isFrameFormatSet = CameraDevice.Instance.SetFrameFormat(mPixelFormat, 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(mPixelFormat);
Debug.Log("Image Captured");
if (cameraFeed == null)
{
Debug.Log("cameraFeed is null");
return;
}
var data = barCodeReader.Decode(cameraFeed.Pixels, cameraFeed.Width, cameraFeed.Height, RGBLuminanceSource.BitmapFormat.RGB24);
Debug.Log("barcode decoded");
if (data != null)
{
// QRCode detected
DisplayCode1.GetComponent<Text>().text = data.Text;
Debug.Log(data.Text);
}
else
{
Debug.Log("No QR code detected !");
}
}
catch (Exception e)
{
Debug.LogError(e.Message);
}
}
}