[VB.net]Emgu CV를 이용한 이미지속 글자찾기!

2017. 10. 18. 11:30Programming/VB.net

안녕하세요! Nitro입니다!


오늘은 Emgu CV를 이용한 이미지 속 글자찾기에 대해 설명해 볼까 합니다!

일단 Emgu CV라는것을 처음 들어보시는 분이 꽤 많은데...


http://www.emgu.com/wiki/index.php/Main_Page ]

공식홈피입니다. 참고해보세요!


간단하게 설명하자면 여러가지 영상, 사진?에 관한 다양한 기능을 지원해주는 크로스플랫폼[각주:1] 이라고 생각하시면 됩니다.

(다른각도에서 같은 이미지 찾기, 얼굴인식, 모션인식 등등... ㄹㅇ 괴물...)


어쨌튼! 그러한 Emgu CV를 이용하여!

사진속 글자를 Text로 바꿔주는 작업을 진행해 볼것입니다!

라고는 하나! 이번에는 Emgu CV라는 별도 기능을 사용하기에 준비물도 많습니다.

일단 이번에 이미지에서 글자를 찾아주는 핵심기능을 담당하는 알고리즘을 다운받아야 하는데요!

tessdata라고 하는데, GitHub에서 받으면 되는데, 용량이 드럽게 큽니다...

자기가 원하는 언어만 별도로 받아주시면 됩니다.


아참! 이게 한국어를 테스트 해보니 오류가 나더라구요.

찾아보니 마스터 tessdata의 오류라던데, 구버전 받으면 되더라구요!

(영어는 잘 작동하는데, 다른언어가 잘 안되는 오류가 있는듯.)

같이 올려드리는데, 먼저 위 링크로 테스트 해보시고, 안되면 그 하단 링크로 테스트 해보시길 바랍니다.


https://github.com/tesseract-ocr/tessdata ] (최신)


https://github.com/tesseract-ocr/tessdata/tree/3.04.00 ] (구버전)


모두 다운이 완료되시면, 비주얼스튜디오 VB.net 프로젝트 파일에 


(프로젝트파일 경로)\bin\Debug\ 안에 tessdata폴더 만들고 그속에 넣어주시면 됩니다!

((프로젝트파일 경로)\bin\Debug\tessdata 속에 eng.traineddata, kor.traineddata등등 넣어주세요...)


그럼! 시작해봅시다!


일단 비주얼스튜디오 실행해주고


VB Windows Forms 선택해줍시다.


짜잔!

하얗고 커다란 폼이 나왔습니다!


이제 Emgu CV를 받아줘야 하는데,

NuGet 패키지를 통해 받아줄것입니다.

[ 프로젝트 - NuGet패키지 관리 ] 순으로 들어가줍니다.


찾아보기 창 들어가서 "emgu cv"를 검색해줍니다.


그럼 여러가지 검색결과가 나오는데, 위 이미지처럼 3.1.0.1버전 나와있는걸로 들어갑니다.


여기서 중요합니다.

최신버전이 아닌 3.0.0버전으로 받아줍니다!(최신버전 오류발생함...ㅜㅠ)


확인눌러줍니다~


아레 출력창에 완료 뜨면 설치가 끝난것입니다.


대충 디자인 해주는데, PictureBox하나랑 Button, RichTextBox 그리고 OpenFileDialog도 하나 뽑아줍니다!


그리고 코딩을 해봅시다!

Imports Emgu.CV Imports Emgu.CV.OCR Imports Emgu.CV.Structure

위 부분은 네임스페이스 참조부분입니다.

매애애앤 위에 써주시면 됩니다.


그리고 버튼클릭 이벤트 부분에 하단 소스코드를 넣어주면 됩니다.

     Dim tess
        OpenFileDialog1.Filter = "All Files|*.*"
        OpenFileDialog1.FileName = ""
        If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            PictureBox1.Image = Bitmap.FromFile(OpenFileDialog1.FileName)

            tess = New Tesseract("", "eng", OcrEngineMode.Default)
            tess.Recognize(New Image(Of Bgr, Byte)(PictureBox1.Image))
            RichTextBox1.Text = tess.GetText()

            RichTextBox1.Size = PictureBox1.Size
        End If

tess 라는 변수를 선언해주고, 이미지파일을 불러온후 Emgu CV에서 변환시켜줍니다.


tess = New Tesseract("", "eng", OcrEngineMode.Default)

이 부분은 

tess = New Tesseract("tessdata 폴더 경로. (프로젝트파일 경로)\bin\Debug\tessdata 일 경우 비워둬도 됨.", "언어 알고리즘 파일", OcrEngineMode.Default)

위처럼 해석 할 수 있습니다.


사용법은 아레

            tess.Recognize(New Image(Of Bgr, Byte)(PictureBox1.Image))
            RichTextBox1.Text = tess.GetText()

와 같습니다.


이렇게 소스코드 입력해주면, 모든 프로그램 제작이 끝나게 됩니다.


저는 하단의 배틀그라운드 공지글을 캡처한 사진을 글자로 옮겨볼것입니다.


두근두근

짠!

We might get to clamber and leap aiound in Playerunknowns Battlegrounds [of?cial

site] belore the end of Octobei, Bluehole Sludlo said today. The climbing and vaulting

system is one ol the main features headed to Plunkbal before it leaves eaily access,

along With a new map set in a desen A new dev update today reaf?rms that the Battle

Royalering multiplayer shootei is still on course to launch by the end of this yeai, with

all that plus optimisations and more. And that desert map r is lookan good


Today's post is a little vague and avoids dates or precise details, but does restate that

the main features they plan to add by version i 0 plans aie new vehicles (remembei the

Komhi, yeah7), vaulting and climbing, and replays, while Worklng on performance

optimisations and stability ?xes too.


Continumg their process oltesting lorlonger, Bluehole say that the big additions will

need to be on the test servers for at least 2m 4 weeks belore going live So they'll be

iolled into three big phases. The ?rst, hitting the test sewers "in late October or eaily

November”, Wlll intioduce climbing and vaulting:


완벽하지는 않지만 거어어의 대부분의 글자는 정확하게 따온다고 봐도 무관할 정도의 인식률입니다.

이상으로 모든 강좌가 끝났습니다.

프로젝트 파일을 업로드 하고싶지만, Emgu CV는 저작권에 걸릴 위험성이 있기에 업로드는 나중에 해보는걸로 하고,

오늘은 Emgu CV로 이미지에서 글자따는것까지 알아보았습니다.


다음시간에는 이전에 만들었던 스크린샷 프로그램과 연동하여서 즉석으로 찍고 즉석으로 이미지에서

글자뽑아내는 프로그램을 만들어봅시다.


아마 Emgu CV는 꽤 많은 강좌를 올릴듯 할꺼같네요.(할수 있는 곳까지...)


그럼...이만!

다음시간에 뵙도록 하겠습니다.

댓글 부탁드려요!


본 강좌는 Visual Studio 2017년 버전을 기준으로 작성되었습니다.

  1. C#, VB, VC++, 파이썬등을 지원하며, 비주얼스튜디오와 자마린을 통해 안드로이드와 애플, 윈도우폰까지 지원가능한 괴물입니다..ㄷㄷ [본문으로]
반응형