저번 포스팅에 이어 오늘은 포스팅에서 만들었던 QRcode를 인식 하는 방법에 대하여 알아보았다. QRcode 인식은 생성과 같이 ZXing을 사용하므로, ZXing.dll을 인포트 하여 주고, 아래와 같이 TestQRcode 라는 이름을 가진 스크립트를 만들어 준 후 빈 오브젝트에 컴포넌트 하여준다.
dll 파일 임포트 방법은 이전 포스팅에서 확인 할 수 있습니다.
1. 하이어라키 창의 빈 오브젝트 생성
2. 빈 오브젝트에 스크립트 컴포넌트
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZXing; //ZXing.dll 임포트 후 선언.
public class TestQRcode : MonoBehaviour
{
private WebCamTexture camTexture;
private Rect screenRect;
static string strBarcodeRead;
void Start()
{
strBarcodeRead = null;
//카메라 화면 크기 조정 //기본 값 스크린 너비, 높이
screenRect = new Rect(0, 0, Screen.width, Screen.height);
camTexture = new WebCamTexture();
camTexture.requestedHeight = Screen.height;
camTexture.requestedWidth = Screen.width;
//읽어 들이는 웹 캠 텍스쳐 값이 널이 아니면
if (camTexture != null)
{
//카메라 동작 플레이.
//만약 정지 시키고 싶다면 -> camTexture.Stop();
//QR코드 인식 후 씬이 넘어간다면 반드시 Stop을 해주어야 카메라가 꺼진다.
camTexture.Play();
}
}
void OnGUI()
{
//OnGUI를 통한 화면에 가시화
//카메라 화면 크기, 카메라에 쓰일 텍스쳐 값(웹 캠 텍스쳐), 화면에 맟게 그리기
GUI.DrawTexture(screenRect, camTexture, ScaleMode.ScaleToFit);
try
{
//Decode를 통한 QRcode 읽어 들이기.
IBarcodeReader barcodeReader = new BarcodeReader();
var result = barcodeReader.Decode(camTexture.GetPixels32(), camTexture.width, camTexture.height);
//만약 결과 값이 널이 아니면
if (result != null)
{
//인식한 QRcode의 텍스트 값을 로그.
Debug.Log(result.Text);
strBarcodeRead = result.Text;
}
}
catch (Exception ex)
{
Debug.LogWarning(ex.Message);
}
}
}
위에는 웹 캠 텍스쳐를 카메라로 사용하는 스크립트로 ZXing를 통해 바코드를 인식하는 방법에 대하여 간단하게 적어보았다. 새 스크립트를 생성하였다면, 다음 하이어라키 창에서 빈 오브젝트를 만들고 해당 스크립트를 컴포넌트하고 실행하여보자, 그렇다면 화면에 맞게 카메라가 동작하는 것을 확인 할 수 있을 것이며, QRcode 를 인식한다면 콘솔 창을 통해 해당 QRcode의 텍스트를 확인 할 수 있을 것이다.
유니티 퍼미션권한 Permission 카메라 퍼미션 (1) | 2020.08.13 |
---|---|
유니티 PlayerPrefs 를 이용한 간단한 데이터 저장 (0) | 2020.08.12 |
유니티 ZXing을 이용한 QRcode 생성 (0) | 2020.07.18 |
유니티 error: The type or namespace name 'post processing' could not be found (0) | 2020.07.10 |
유니티 dll 파일 유니티 임포트 하기 (0) | 2020.07.07 |
댓글 영역