앞서서 도서 바코드가 어떤 식으로 인코딩이 되어 있는지를 살펴보았다. 이번에는 앞선 내용을 통해서 도서 바코드를 디코딩해서 우리가 원하는 정보를 가져오는 방법에 대해서 살펴보도록 하겠다.
도서 바코드의 경우에는 첫 시작이 9이기 때문에 따로 이 숫자를 인식을 해줄 필요는 없었다. 만약 도서의 첫 시작 번호를 몰랐다면 숫자를 인식할 필요가 있는데, 그 이유는 도서 바코드에 사용하는 EAN-13이 맨 앞자리에 따라서 인코딩 방법이 달라지기 때문이다. (아무리 생각을 해보더라도 왜 앞자리에 따라서 인코딩 방법을 다르게 했는지 이해가 가지 않는다.... 그냥 바코드에 줄을 더 추가해서 맨 앞자리를 표현을 해주면 될텐데 말이다.)
처음에는 C++로 구현을 하려고 했으나, 그냥 구현하는 것이 약간 귀찮아서 그냥 Java를 이용해서 구현하였다. 물론 핵심 알고리즘은 똑같기 때문에 금방 C++로 변환이 가능하기도 하다.
구현 방법을 하기에 앞서 데이터를 이미 0과 1로 변환했다고 가정을 하였다. 물론 이것을 카메라로 찍어서 인식을 시키게 하려면 좀 더 복잡한 알고리즘이 들어가기 때문에 일단은 문제를 간단하게 하기 위해서 위와 같은 가정을 사용하였다.
이 데이터를 문자열 형태로 받은 다음에, 도서의 경우에 첫 시작 숫자가 9이기 때문에 LGGLGLRRRRRR으로 디코딩이 되어 있다는 사실을 토대로 해서 각각의 데이터를 L, G, R의 값에 맞게 디코딩을 하였고, 마지막으로는 그 디코딩한 데이터와 맨 앞자리 숫자인 '9'를 결합한 결과를 반환하는 형태로 디코딩함수를 구현하였다.
다음 번에는 바코드 사진을 가져와서 바이너리 데이터로 변환하는 내용을 구현할 예정이다.
'컴퓨터 > 기타' 카테고리의 다른 글
Project 2.0 카카오톡 자동 응답봇 만들기[0] (1) | 2016.07.15 |
---|---|
도서 바코드 인식기 프로그램 제작 (3) (0) | 2016.01.28 |
도서 바코드 인식기 프로그램 제작 (1) (3) | 2016.01.23 |
Project 1.0 telegram 봇 제작하기.(3) (0) | 2015.01.08 |
Project 1.0 telegram 봇 제작하기.(2) (0) | 2014.11.04 |