Barcode (mã vạch) là 1 hình ảnh chứa thông tin được mã hóa theo 1 chuẩn nào đó (có nhiều chuẩn). Dữ liệu được mã hóa thành các bit 0-1 rồi in ra với các nét kẻ đậm – nhạt theo quy ước. Quá trình đọc barcode là ghi nhận các nét kẻ rồi chuyển thành chuỗi bit theo quy ước, sau đó chuyển thành text.
phát minh barcode với mục đích giảm thời gian và công sức nhập liệu. Giả sử không có barcode thì nhân viên tính tiền siêu thị phải nhập mã số từng món hàng. Cầm máy quét chưa tới 1 giây nhưng nhập mỗi mã mất vài giây, tốn công sức, chưa kể nhập sai phải nhập lại.
Hiện tại có 2 loại mã vạch thường thấy là barcode 128 và QRcode, các loại khác ít phổ biến hơn do tốc độ đọc chậm. Sự khác biệt lớn nhất giữa 2 loại: Barcode là 1D còn QRcode là 2D. Có thể giải thích bằng ảnh này:
Với barcode 1D thì bạn scan ảnh ở vị trí đường kẻ xanh hay đường kẻ đỏ đều không khác nhau. Còn QRcode có sự khác biệt trong việc sắp xếp các điểm ảnh ở chiều ngang và chiều dọc. QRcode nhờ vậy mà chứa được nhiều thông tin hơn Barcode.
Xem thêm bài tạo qrcode bằng C# tại đây https://thigiacmaytinh.com/tao-qr-code/
Thật là tiện khi có lib gọi là Zxing chuyên dùng để đọc barcode trong ảnh. Lib này hỗ trợ nhiều ngôn ngữ khác nhau: C#, C++, Java,… Các bạn có thể download về rồi sử dụng Cmake để build solution.
Còn nếu bạn không rành trong việc sử dụng Cmake thì có thể download source bên dưới, build bằng Visual Studio 2013 for Window Desktop. Trong đó bao gồm 4 thư mục dùng để:
- Tạo barcode
- Đọc barcode bằng C++
- Đọc barcode bằng C#. Đọc từ ảnh tĩnh lẫn webcam
- Tạo mã QR code
Download
Trong repo của github đã upload các project sample khác nhau:
barcode (Github)
Bộ dữ liệu hình ảnh barcode (127 MB)
Đọc thêm: Giới thiệu về Cmake