问题只是要给出解决方案:)
主要思想是识别Unity上的QR码,而不需要任何其他操作,例如点击屏幕或者像这样。
答案 0 :(得分:3)
(对我而言,“vuforia free”没有必要有水印,所以这是我的解决方案)
(此外,Vuforia可以更快地与相机配合使用,无需实现手动自动对焦)
使用Vuforia作为网络摄像头源并使用ZXing Library作为QR识别器的连续QR码识别
using UnityEngine;
using Vuforia;
using ZXing;
public class QRCodeReader : MonoBehaviour {
private bool _isFrameFormatSet;
IBarcodeReader _barcodeReader = new BarcodeReader();
void Start () {
InvokeRepeating("Autofocus", 2f, 2f);
}
void Autofocus () {
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_TRIGGERAUTO);
RegognizeQR();
}
private Vuforia.Image GetCurrFrame()
{
return CameraDevice.Instance.GetCameraImage(Vuforia.Image.PIXEL_FORMAT.GRAYSCALE);
}
void RegognizeQR()
{
if (!_isFrameFormatSet == _isFrameFormatSet)
{
_isFrameFormatSet = CameraDevice.Instance.SetFrameFormat(Vuforia.Image.PIXEL_FORMAT.GRAYSCALE, true);
}
var currFrame = GetCurrFrame();
if (currFrame == null)
{
Debug.Log("Camera image capture failure;");
}
else
{
var imgSource = new RGBLuminanceSource(currFrame.Pixels, currFrame.BufferWidth, currFrame.BufferHeight, true);
var result = _barcodeReader.Decode(imgSource);
if (result != null)
{
Debug.Log("RECOGNIZED: " + result.Text);
}
}
}
}
在没有Vuforia的情况下也可以实现。 Unity提供了获取摄像头并在网络摄像头上显示输入的可能性。可以找到更多文档here。
ZXing lib您可以找到here,或者使用sourse code located on github亲自构建它。
这两个库都是跨平台的,因此在不同的设备上一定不会出现问题。