QR코드리더기를 내 휴대폰용으로 만들어보았다.
비슷한 프로그램으론 i-nigma라는 프로그램이 있는데.. 이건 내 목적과는 좀 다른놈이라...
난 다른 목적으로 쓰고 싶었다.
예를들면.. 명함에 이름과 폰번호 이메일같은 것을 인코딩해놓은 QR코드를 인쇄해놓고..
내 프로그램으로 스캔하면 휴대폰 주소록에 바로 입력된다던지...
일단 취미로 만드는거니, 머릿속에 사사삭 구성을 한 다음에 만들기 시작했다.
개발환경은 전에 다른 프로그램 만들때 만들어뒀고..(VC#) 세가지 난코스(?)가 있었다.
1. 카메라에서 영상 얻기.
원래는 CameraCaptureDialog로 스틸컷을 얻어보려 했다. 실패다..
찾아보니 Windows Mobile플렛폼과는 별도로 삼성(내 휴대폰 제작사)에서 자체개발이라 그놈이 안먹힌단다.
자체개발 했더라도 어떻게든 먹히게 만들어놓으면 안되는건가?
더 찾아보니 DirectDraw를 쓰란다.. 응? 스마트폰도 그런게 되는구나.. WM5부터 지원한단다.
결국 DirectDraw로 해결...
2. 바코드 디코딩.
QR코드 디코딩을 해보려 영상처리를 일단 하기 시작했다. 젠장 머리아프게 하나하나 하고 있었는데..
속도도 약간 느리고 왠지 취미가 노가다가 되는느낌이다. 그래서 오픈된 라이브러리 없나 찾아봤다.
당연히 있다. 닷넷용으로 만들어진거.. 바로 붙였다.
3. 카메라 영상 좌우 반전(?)
카메라에서 받은 영상이 좌우가 바뀌었다.
코드는 제대로 짰는데 바코드가 디코딩이 계속 안되길래 머리쥐어짜다가 발견한거 -_-;;
그거때문에 안되는지 한참만에 파악했다.
닷넷 2.0프레임웍에 RotateFlip이라는 함수가 있단다. 그래서 얼른 써봤다. 젠장 안된다.
자세히보니 닷넷 2.0 컴팩트 프레임웍(윈도우즈 모바일용)에는 그게 안된단다.
결국 구글링해서 붙여넣었다.
※ 결과
카메라를 잘 들이대면 디코딩이 되긴 된다.
근데 i-nigma쓸때도 겪었던 카메라 화면깨짐(?) 현상때문에 카메라가 컨디션 좋을때만 된다 -_-;;
다음에 다른 폰으로 시도를 해보던가.. 나중에 더 고쳐서 써먹어봐야겠다.