zxing(https://github.com/zxing/zxing)을 이용하여 바코드 읽기를 테스트 해 보았다.
zxing은 원래 java로 만들어진 라이브러리인데 다양한 언어로 지원을 하고 있다. C++의 경우 초기부터 지원을 해 오다가 zxing이 java 이외의 언어에 대한 지원이 소극적이더니 결국 C++은 더이상 지원을 하지 않고 있다. 다행이 C++을 지원하는 third-party projects(zxing cpp: https://github.com/glassechidna/zxing-cpp) 가 있어서 C++에서 쉽게 ZXing을 사용할 수 있었다.
ZXing cpp 빌드는 쉽게 하였는데 OpenCV 데이터를 ZXing에 넘기는게 문제였다. 컬러채널 및 흑백채널데이터를 넘겨도 ZXing에서 인식을 하지 못하였다.
인터넷을 검색하던 중 OpenCV의 이미지인 Mat 객체를 이용한 소스가 공개된 것을 찾았다.
https://github.com/geduino-foundation/zxing-cpp
MatSource는 LuminanceSource를 상속받아 getRow와 getMatrix 함수가 구현되어 있다. cv::Mat 객체로 생성을 하는 생성자가 있어 쉽게 객체를 생성할 수 있었다. 단 MatSource를 생성할 때 흑백 영상을 이용해야 한다.
아래 코드는 MatSource를 이용한 바코드 인식 코드 이다. OpenCV 예제소스는 QRCode만 인식하도록 되어 있어서 기본 코드에 있는 코드를 사용해 보았다.
'Dev Story' 카테고리의 다른 글
Zint 정적라이브러리를 이용하여 바코드 생성하기 (0) | 2016.10.20 |
---|---|
바코드 생성 라이브러리 Zint 빌드하기 (0) | 2016.10.19 |
OpenCV 3.1 빌드 라이브러리 메모리 누수 문제에 대하여... (0) | 2016.10.09 |
VTK 7.0과 OpenCV 3.1 테스트 (0) | 2016.10.09 |
OpenCV 3.1 버전에 VTK를 이용할 수 있도록 빌드하기 (0) | 2016.10.07 |