码迷,mamicode.com
首页 > 移动开发 > 详细

unity 调用手机摄像机 识别二维码

时间:2015-05-25 10:16:34      阅读:387      评论:0      收藏:0      [点我收藏+]

标签:unity   二维码   

简单的调用手机摄像 拍摄 然后识别二维码 显示二维码的内容

需要导入一个zxing.unity.dll文件,现在这个脚本的识别数据是放在Updata里边扫描的 数据量特别大会卡  要是用的话就自己做一下一秒执行一次。我这里没有弄

下载地址http://download.csdn.net/detail/chh19941125/8734149

代码:

using System.Threading;
using UnityEngine;
using ZXing;

public class WebCameraScript : MonoBehaviour
{
    public string LastResult;
    public string Lastresult;
    public Color32[] data;
    private bool isQuit;

    public GUITexture myCameraTexture;
    private WebCamTexture webCameraTexture;

    private void Start()
    {
        //  bool success = CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
        // Checks how many and which cameras are available on the device
        for (int cameraIndex = 0; cameraIndex < WebCamTexture.devices.Length; cameraIndex++)
        {
            // We want the back camera
            if (!WebCamTexture.devices[cameraIndex].isFrontFacing)
            {
                //webCameraTexture = new WebCamTexture(cameraIndex, Screen.width, Screen.height);
                webCameraTexture = new WebCamTexture(cameraIndex, 200, 200);

                // Here we flip the GuiTexture by applying a localScale transformation
                // works only in Landscape mode
                myCameraTexture.transform.localScale = new Vector3(1, 1, 1);
            }
        }

        // Here we tell that the texture of coming from the camera should be applied 
        // to our GUITexture. As we have flipped it before the camera preview will have the 
        // correct orientation
        myCameraTexture.texture = webCameraTexture;
        // Starts the camera
        webCameraTexture.Play();
        //enabled=WebCamTexture.s
    }

    public void ShowCamera()
    {
        myCameraTexture.guiTexture.enabled = true;
        webCameraTexture.Play();
    }

    public void HideCamera()
    {
        myCameraTexture.guiTexture.enabled = false;
        webCameraTexture.Stop();
    }

    private void OnGUI()
    {
        GUI.Label(new Rect(60, 30*1, Screen.width, 20), "LastResult:" + LastResult);
        if (GUI.Button(new Rect(0, 0, 100, 100), "ON/OFF"))
        {
            if (webCameraTexture.isPlaying)
                HideCamera();
            else
                ShowCamera();
        }
    }

    private void Update()
    {
        //data = new Color32[webCameraTexture.width * webCameraTexture.height];
        data = webCameraTexture.GetPixels32();

        DecodeQR(webCameraTexture.width, webCameraTexture.height);
    }


    private void DecodeQR(int W, int H)
    {
        if (isQuit)
            return;
        // create a reader with a custom luminance source
        var barcodeReader = new BarcodeReader {AutoRotate = true, TryHarder = true};

        //        while (true)
        {
            try
            {
                // decode the current frame
                Result result = barcodeReader.Decode(data, W, H);
                if (result != null)
                {
                    LastResult = result.Text;
                    // shouldEncodeNow = true;
                    print("i read out::" + result.Text);
                }

                // Sleep a little bit and set the signal to get the next frame
                Thread.Sleep(200);
                data = null;
            }
            catch
            {
            }
        }
    }
}


unity 调用手机摄像机 识别二维码

标签:unity   二维码   

原文地址:http://blog.csdn.net/chh19941125/article/details/45953725

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!