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
            {
            }
        }
    }
}
时间: 2024-10-09 04:33:20

unity 调用手机摄像机 识别二维码的相关文章

[Unity+Android]横版扫描二维码

终于解决了一个忧伤好久的问题,严重拖了项目进度,深感惭愧!一直被一系列的问题所困扰,然后又只能自己一个人摸索,也是一段辛酸忧伤史,现在小结一下上个月在做二维码的过程中所碰到的问题以及解决办法,现在庆幸终于解决好了,终于能将这个功能告一段落,一下小结也是分享一下Unity的某些"坑",让同行少走弯路,起码在二维码这方面应该会有所启迪,欣慰的是接下来几天终于可以做自己应该做的事情了! 效果图: 先小结一下碰到的问题: 1.Unity工程屏幕方向与Android工程屏幕方向要一致的问题 本来

关于《手机扫描电脑二维码登录原理》的学习

技术学习:手机扫描电脑二维码登录原理 通用地实现方式(以登录电脑浏览器网页版微信为例): 1.每打开一次微信(Client)电脑浏览器网页时会随机生成一个含有唯一uid的二维码,每次刷新页面都会不一样(*这个可以保证一个uid只可以绑定一个帐号和密码,如果一个uid可以绑定多个帐号和密码,那么很可能你的电脑会登录别人的微信) ps: 返回uid的目的是识别用户身份,而且实际上打开这个页面时浏览器已经和Server创建了一个长连接等待确认信息.这个页面在加载完毕时,也已经把很多登录后才需要的相关资

Qt+QZXing编写识别二维码的程序

本人最近在用Qt编写程序,需要用编写二维码识别功能.在网上搜寻一番,找到了QZXing.配置过程中确实出了一大把汗,这里我写这篇文章记录配置方法,替后人省一把汗吧!我的开发环境:MSVC2010 + Qt5 从这里下载最新版的QZXing_sourceV2.3.zip,解压之后得到的是源代码,里面有一个QZXing.pri文件.理论上用MSVC加载这个pri文件之后这个库的代码就会出现在工程的代码列表中,但是理论归理论,实际上msvc在加载pri的过程中,弹出一大堆错误信息,完全不知所云,网上找

Android的二维码功能实现以及长按识别二维码

一.初步集成Zxing项目 二维码的识别可是在生活中随处可见的,现在基本上所有APP都有二维码的相关操作,如果识别二维码从头开始开发做起来还是相当复杂和麻烦的,从零开始开发肯定不现实,最好的做法就是借助现有的开源项目,Github上名气最大的就是Zxing了,提供了多个平台的二维码扫码解决方案,开源项目地址是:https://github.com/zxing/zxing,我们今天集成Zxing到我们自己的项目中去,并实现一些二维码生成.扫描.长按识别二维码等相关操作: 1.下载Zxing项目所依

HTML5实现扫描识别二维码/生成二维码

扫描识别二维码 思路: 1. 操作摄像头,获取图片.HTML5 WEBRTC的navigator.getUserMedia方法去实时获取摄像头资源. 2. 利用canvas使用相关算法分析图片识别图片得出结果,可用jquery.qrcode分析二维码 .(技术点:getImageData) 局限性: 移动平台支持getUserMedia/Stream API的浏览器比较少,支持列表http://caniuse.com/#feat=stream (目前没发现有IOS是支持的) 代码实现: 感谢gi

spa(单页应用)中,使用history模式时,微信长按识别二维码在ios下失效的问题

spa(单页应用,vue)中,使用history模式时,微信长按识别二维码在ios下失效的问题. 触发条件: spa单页应用: 路由模式 history 从其他页面跳转到带有微信二维码识别的页面(不是直接打开该页面) ios版本的微信(实测版本6.5.19) 结果: 二维码长按无法识别,刷新页面后恢复正常,安卓下正常. 解决方案: 1. 进入该页面的方式不使用路由跳转,而改为 <a href="xxx">目标二维码页面</a>的方式: 2. 在beforeCre

【咸鱼教程】Egret可长按识别二维码(精确位置和大小)

教程目录一 实现原理二 实现过程三 Demo下载 本教程是在Egret中实现长按识别的二维码,并可以精确定位二维码的位置和大小,支持横屏和竖屏. 一 实现原理 微信中长按识别二维码,需要长按jpg或png等图片上,才会调起识别. 因为egret中的二维码,是绘制在canvas上的,故不能被长按识别. 所以为了解决这个问题,需要在canvas上覆盖一个二维码<img>标签, 达到可以长按识别的需求. 二 实现过程 1 在index.html中为div增加id = gameDiv,以备在egret

PHP 生成、识别二维码

温馨提示:经过这 2 天的折腾,我卸载了 php7.1.原因只有一个——我要安装的条形码扩展模块 php-zbarcode 的 c 语言源代码不支持 php7.改源代码改了半天,还是没奏效.最后看 github 上一个温馨的 issue 换回了 php5.6.这下装起来顺利多了-话不多说,正题开始. 一.php 生成 qr code 二维码 phpqrcode 是由 php 编写的.可以生成 QR Code 二维码的第三方包.官网有很多例子可以参考,使用起来很简单,2 行代码. <?php //

Jquery生成二维码(微信中长按图片识别二维码功能)

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="//cdn.bootcss.com/jquery/3.1.1/jquery.js"></script> <script src="