본문 바로가기

개발

[WPF] QR 코드 인식하기

이번 글에서는 우리 프로젝트에 포함되어 있는 QR코드 인식 기능에 대해 살펴보자.

이걸 제공해주는 이유는 지금 남은 학기내에 작업을 해야 할 것들이 많아 어려움을 겪을 백성들을 위해 친히 만든것이다. 음하하하... ㅡㅡ;

우리 클래스룸에 프로젝트 파일 하나 첨부하여 올려놓았다.

그럼 이걸 어떻게 사용하는지에 대해 보자

 

클래스룸에서 해당 파일을 다운받아 압축해제하고 키오스크 솔루션 파일이 있는 폴더로 복사한다

복사할때는 git에도 올려야 하니 자신들의 팀 폴더 구조에 맞게 위치시킨다.

 

보통 아래와 같은 구조로 되어 있을 것이다. 솔루션 파일(*.sln)이 있고 git ignore파일등이 존재

이 디렉토리구조상에서 폴더는 각각의 프로젝트.

 

이 상태에서 여기에 다운받은 프로젝트 폴더(KQRCode)를 위치한다.

 

이제 추가한 프로젝트를 우리가 개발하고 있는 프로젝트에 활용하도록 추가해보자.

솔루션 - 오른쪽 클릭 - Add - Existing Project... 선택 (한글로 되어 있으면 알아서~)

 

선택하고 나면 프로젝트 선택 창이 나온다

 

친절하게도 딱 우리가 작업하고 있는 폴더를 열어준다. 들어가 보자

KQRCode.csproj 라고 되어 있는 프로젝트 파일을 선택 후 열기.

 

그러면, 솔루션 탐색기에 해당 프로젝트가 추가되었다.

여기까지한다고 해서 연동되는 것은 아니고 레퍼런스를 추가해야 한다.

 

KQRCode라고 뙇 나온다. 체크박스에 체크하고 OK

Visual Studio 솔루션탐색기에 보면 해당 프로젝트에 KQRCode가 추가된 것을 볼 수 있다.

 

 

이제 코딩하면 된다.

이쯤이면 이 사람이 왜 이렇게 자세하게 설명해주지?란 의문이 들어야 한다.

사실은 오늘 오전에는 중학교 학생들을 대상으로 수업을 했다. 깨달음을 얻었다. 더 자세히 꼼꼼히 해야 한다는 것을

 

코딩해보자.

QR코드인식을 사용할 page나 usercontrol에 다음과 같이 코딩한다

나는 샘플을 만들기 위해 Window에다가 그냥 했다.

 

<Window x:Class="QRSample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:QRSample"
        xmlns:qrcode="clr-namespace:KQRCode;assembly=KQRCode"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <qrcode:KQRWebCam x:Name="webcam" Margin="12"
                          QrDecoded="webcam_QrDecoded" />

        <TextBox x:Name="tbRecog" Margin="12,12,12,12"
                 Text="인식된 값이 여기에 나온단다"
                 Height="30"
                 VerticalAlignment="Bottom"
                 HorizontalContentAlignment="Stretch"
                 VerticalContentAlignment="Center"></TextBox>
    </Grid>
</Window>

 

TextBox는 인식이 잘되나 보려고 한거니 실제 개발이 완료되었을 때는 필요없다. 각자 상황에 맞게 TextBlock이나 Label등을 사용해서 표시하면 된다.

 

이쯤에서 얼쑤~ 해야 한다. 듣고 가자. 어깨춤 출 준비~ (꼭 사운드 ON)

 

 

 

KQRWebCam에서 QR코드 인식이 되면 QRDecoded 이벤트가 발생된다.

 

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            //카메라가 여러대일경우 값을 바꾸면 됨.
            //콤보박스로 제공하면 좋으나 우리 프로젝트에서는 불필요함
            webcam.CameraIndex = 0;
        }

        private void webcam_QrDecoded(object sender, string e)
        {
            tbRecog.Text = e;
        }
    }

 

두번째 파라미터 string e 에 인식된 정보가 나온다. 

 

저 QR코드는 어떻게 만들어요는 하지 말자. 수업 때 아마도 뒤에서 내가 이러고 있을거다. 와씨

 

그럼 이만. 난 밥좀 먹고 온다.