분류 전체보기 썸네일형 리스트형 도서 바코드 인식기 프로그램 제작 (3) 앞선 포스팅에서 도서 바코드의 바이너리 데이터를 우리가 알아볼 수 있는 데이터인 ISBN으로 변환하는 알고리즘을 Java를 이용해서 구현해보았다. 그래서 이번에는 사진으로 찍은 바코드를 인식해서 바이너리 데이터로 변환하는 알고리즘을 짜보도록 하겠다.영상처리를 하는데 가장 자주 쓰이는 오픈 소스인 OpenCV를 이용해서 짜볼까 하다가 아직 이것을 다루는 방법을 잘 몰라서 일단은 Python으로 대충 구현을 하였다. 핵심 알고리즘의 부분은 다음과 같다. 도서 바코드를 보았을 때, 기준이 되는 선이 총 6개가 존재한다. 이 기준선은 다른 선에 비해서 아래쪽으로 좀 더 삐져 나와있는 것을 확인할 수 있다. 그래서 이것을 이용해서 기준선의 두께를 기준으로 빈 공간은 0을 표현하고 검은 색은 1을 표현한다고 했으므.. 무료 SSL 서버 LetsEncrypt 설치 및 설정 SSL 서버는 암호화된 통신을 제공해주기 때문에 패킷을 캡처하더라도 암호화 된 데이터가 전송되는 것이기 때문에 중간에 패킷을 가로채더라도 알아볼 수 없다. 이러한 SSL 서버의 인증서를 받기 위해서는 매우 비싼 가격을 지불해야 한다. 물론 잘 찾아보면 무료 SSL 인증서를 제공해주는 서비스를 찾을 수도 있지만(startSSL), 1년 마다 갱신을 해야 하는 것과 같은 약간의 불편함이 있다. 이번에 소개할 서비스는 LetsEncrypt로 작년 9월 달이었나? 그 때쯤부터 서비스의 준비를 시작하였다.https://letsencrypt.org/이 사이트에 들어가서 보면 이 프로젝트를 후원해주는 많은 단체들을 볼 수도 있고, 설정 방법에 대한 문서도 제공해주고 있다. 아직 직접 운영하고 있는 서버와 도메인이 없.. 도서 바코드 데이터 추출 알고리즘 이 소스코드는 도서에서만 적용이 되는 것입니다. 물론 다른 바코드의 경우에도 EAN-13을 만족한다면 몇 가지 상수 값만 변환하면 바로 사용이 가능합니다. 여기에서는 따로 구현을 하지 않았습니다. 만약 다른 바코드로 사용을 하신다면 11번 줄과 31번 줄에 있는 데이터 값을 해당하는 값에 맞게 변환을 해주셔야 합니다. 사용방법은 Barcode개체를 생성할 때 인자로 바코드의 바이너리 데이터를 주기만 하면 되며, getData 메서드를 호출하면 그 바이너리 데이터를 변환해서 우리가 알아볼 수 있는 데이터로 확인이 가능합니다. 최적화를 신경쓰지 않고 만든 소스 코드라 약간 난잡해보일 수 있습니다. 역시 변수명을 정하는 것이 가장 어려운 문제인 것 같네요...... class Barcode { private .. 도서 바코드 인식기 프로그램 제작 (2) 앞서서 도서 바코드가 어떤 식으로 인코딩이 되어 있는지를 살펴보았다. 이번에는 앞선 내용을 통해서 도서 바코드를 디코딩해서 우리가 원하는 정보를 가져오는 방법에 대해서 살펴보도록 하겠다. 도서 바코드의 경우에는 첫 시작이 9이기 때문에 따로 이 숫자를 인식을 해줄 필요는 없었다. 만약 도서의 첫 시작 번호를 몰랐다면 숫자를 인식할 필요가 있는데, 그 이유는 도서 바코드에 사용하는 EAN-13이 맨 앞자리에 따라서 인코딩 방법이 달라지기 때문이다. (아무리 생각을 해보더라도 왜 앞자리에 따라서 인코딩 방법을 다르게 했는지 이해가 가지 않는다.... 그냥 바코드에 줄을 더 추가해서 맨 앞자리를 표현을 해주면 될텐데 말이다.) 처음에는 C++로 구현을 하려고 했으나, 그냥 구현하는 것이 약간 귀찮아서 그냥 J.. 도서 바코드 인식기 프로그램 제작 (1) 대부분의 책에서 뒤쪽 표지를 보면 바코드가 붙어있는 것을 확인할 수 있다. 그리고 이 붙어있는 바코드를 바코드 리더기로 읽게 되면 자동으로 어떤 책인지에 대한 정보를 볼 수 있다. 바코드를 크게 나누면 1차원 바코드와 2차원 바코드로 나눌 수 있다. 도서에 사용되는 바코드의 경우에는 1차원 바코드에 해당하며, 2차원 바코드의 경우 우리가 잘 알고 있는 QR Code가 대표적인 예이다. 이 글의 목표는 도서 바코드 인식기를 만드는 것이기 때문에 2차원 바코드가 아닌 1차원 바코드에 대해서 다루도록 하겠다. "2차원 바코드에 대해서 다루는 것이 아니다...." "아래와 같은 1차원 바코드에 대해 다루는 것이다!!" 도서에 사용되는 1차원 바코드는 EAN-13 바코드(국제 상품 번호, International.. OAuth 2.0을 이용한 소셜 로그인 OAuth 2.0을 이용한 소셜 로그인 Daum에서 제공하는 로그인 API 설명서http://developers.daum.net/services/apis/docs/oauth2_0/reference Naver에서 제공하는 로그인 API 설명서 https://nid.naver.com/devcenter/docs.nhn?menu=API Google에서 제공하는 로그인 API 설명서 https://developers.google.com/+/web/signin/ Facebook에서 제공하는 로그인 API 설명서 https://developers.facebook.com/docs/facebook-login/overview 이 설명서에 나온 내용대로 OAuth2.0 로그인을 차례대로 구현하고 있다. 지금까지 Daum과 .. [Text Editor] Sublime Text 모든 프로그래밍 언어는 메모장을 이용해서 작성이 가능하다. 하지만, 메모장을 이용해서만 작성하기에는 오타가 나기도 쉽고 사용해야할 모든 함수들을 외워야 하기 때문에 초보자들에게는 약간의 어려움이 있을 수 있다. 특히 Python의 경우에는 tab을 통해 함수를 구분하기 때문에 엔터를 한 번 칠때마다 같은 횟수의 tab키를 계속 눌러주어야 하기 때문에 매우 불편하다. 즉 그렇기 때문에 코딩을 좀 더 쉽게 할 수 있도록 도와주는 프로그램이 존재한다. 잘 알려진 C++나 C#의 개발도구로는 Visual studio가 있다. 이 Visual Studio의 경우에는 강력한 기능을 가지고 있는 반면, 용량도 상당히 많이 잡아먹고, 또한 실행을 했을 때 램도 많이 잡아먹는 편이어서 약간 설치하기 꺼려하는 사람이 있을.. Github에서 Markdown 문법 사용하기 Github에서는 공식적으로 Markdown 문법을 사용할 수 있도록 해준다. 이 Markdown 문법이 적용 될 수 있는 범위는 Issue를 작성하거나, 댓글을 달거나, 혹은 Markdown file인 확장자가 .md파일을 볼 때 문법이 적용된 결과를 기본적으로 보여주며, 버튼을 눌러서 Raw 형태의 데이터를 볼 수 있다. 이 Markdown 문법은 몇 가지 작성 방식만 알고 있으면 매우 간단한 방법으로 멋진 모습을 가진 문서를 만들 수 있다는 장점이 있다. 즉 우리는 스타일시트에 대해 생각을 하지 않고도 보기 좋은 문서를 만들 수 있다는 것을 의미한다.또한 소스코드를 문서상에 넣을 때에도 Highlight가 적용된 문서로 자동으로 만들어준다는 것이 매우 편리한 점이다. 당장 Tistory 블로그만 보.. 이전 1 ··· 15 16 17 18 19 20 21 ··· 35 다음