All Projects → sz3 → Libcimbar

sz3 / Libcimbar

Licence: mpl-2.0
Optimized implementation for color-icon-matrix barcodes

Programming Languages

cpp17
186 projects

Projects that are alternatives of or similar to Libcimbar

Opencv image comparator
图片相似度计算(直方图、峰值信噪比、结构相似性、感知哈希算法)、轮廓检测、直线检测、圆检测、角点检测、直线交点计算、旋转角度矫正、图像匹配的对应相似处连线、灰度、二值化、直方图均衡化。
Stars: ✭ 87 (-11.22%)
Mutual labels:  opencv
Gocv Alpine
GoCV-compatible OpenCV 3.4 Alpine 3.7 Docker image
Stars: ✭ 95 (-3.06%)
Mutual labels:  opencv
Automatic Leaf Infection Identifier
Automatic detection of plant diseases
Stars: ✭ 97 (-1.02%)
Mutual labels:  opencv
High Dynamic Range Image
Creating HDR image from image stack with multiple exposures
Stars: ✭ 88 (-10.2%)
Mutual labels:  opencv
Wow Fish Bot
World of Warcraft ( WoW ) Fish BOT. Python. Simple. For me.
Stars: ✭ 93 (-5.1%)
Mutual labels:  opencv
Retina Features
Project for segmentation of blood vessels, microaneurysm and hardexudates in fundus images.
Stars: ✭ 95 (-3.06%)
Mutual labels:  opencv
Sudoku Py
An augmented reality sudoku solver using OpenCV
Stars: ✭ 85 (-13.27%)
Mutual labels:  opencv
Zed Opencv
ZED SDK interface sample for OpenCV
Stars: ✭ 96 (-2.04%)
Mutual labels:  opencv
Agender
Real-time estimation of gender and age
Stars: ✭ 95 (-3.06%)
Mutual labels:  opencv
Pybind11 opencv numpy
Implementation of cv::Mat conversion to numpy.array for pybind11
Stars: ✭ 96 (-2.04%)
Mutual labels:  opencv
Opencv3 Android Sdk With Contrib
Build OpenCV3 Android SDK with contrib modules
Stars: ✭ 90 (-8.16%)
Mutual labels:  opencv
Kinectazuredkprogramming
Samples about Kinect Azure DK programming
Stars: ✭ 92 (-6.12%)
Mutual labels:  opencv
Sky Detector
Sky area detection without deep neural networks https://maybeshewill-cv.github.io/sky-detector/
Stars: ✭ 96 (-2.04%)
Mutual labels:  opencv
The bilateral solver
Fast Bilateral Solver implementation with C++ and demos
Stars: ✭ 87 (-11.22%)
Mutual labels:  opencv
Zzyqrcodeswift
a scanner for QRCode barCode 最好用的ios二维码、条形码,扫描、生成框架,支持闪光灯,从相册获取,扫描音效等,高仿微信,微博
Stars: ✭ 97 (-1.02%)
Mutual labels:  barcode
Fisheye Stereo Calibration
📷 📷 Fisheye stereo calibration using OpenCV and C++
Stars: ✭ 85 (-13.27%)
Mutual labels:  opencv
Signature Recognition
Verify the authenticity of handwritten signatures through digital image processing and neural networks.
Stars: ✭ 95 (-3.06%)
Mutual labels:  opencv
Swiftscan
A barcode and qr code scanner( 二维码 各种码识别,生成,界面效果)
Stars: ✭ 1,349 (+1276.53%)
Mutual labels:  barcode
Picamnn
Survelliance system with deep learning based people detection (YOLO)
Stars: ✭ 97 (-1.02%)
Mutual labels:  opencv
Emcvlib
An OpenCV framework for iOS and macOS
Stars: ✭ 96 (-2.04%)
Mutual labels:  opencv

INTRODUCTION | ABOUT | CFC | LIBCIMBAR

DETAILS | PERFORMANCE | TODO

libcimbar: Color Icon Matrix Barcodes

Behold: an experimental barcode format for air-gapped data transfer.

It can sustain speeds of 943+ kilobits/s (~118 KB/s) using just a computer monitor and a smartphone camera!

Explain?

The encoder outputs an animated barcode to a computer or smartphone screen:

While the decoder is a cell phone app that uses the phone camera to read the animated barcode:

No internet/bluetooth/NFC/etc is used. All data is transmitted through the camera lens. You can try it out yourself, or take my word that it works. :)

How does it work?

cimbar is a high-density 2D barcode format. Data is stored in a grid of colored tiles -- bits are encoded based on which tile is chosen, and which color is chosen to draw the tile. Reed Solomon error correction is applied on the data, to account for the lossy nature of the video -> digital decoding. Sub-1% error rates are expected, and corrected.

libcimbar, this optimized implementation, includes a simple protocol for file encoding built on fountain codes (wirehair) and zstd compression. Files of up to 33MB (after compression!) are encoded in a series of cimbar codes, which can be output as images or a live video feed. Once enough distinct image frames have been decoded successfully, the file will be reconstructed and decompressed successfully. This is true even if the images are received out of order, or if some have been corrupted or are missing.

Platforms

The code is written in C++, and developed/tested on amd64+linux, arm64+android (decoder only), and emscripten+WASM (encoder only). It probably works, or can be made to work, on other platforms.

Crucially, because the encoder compiles to asmjs and wasm, it can run on anything with a modern web browser. There are releases if you wish to run the encoder locally instead of via cimbar.org.

Library dependencies

OpenCV must be installed before building. All other dependencies are included in the source tree.

Optional:

  • GLFW - https://github.com/glfw/glfw or libglfw3-dev (for when opencv-highgui is not available or unwanted)
    • the GLFW code path also needs/uses GLES3/gl3.h (libgles2-mesa-dev on ubuntu 18.04)

Build

cmake .
make -j7
make install

By default, libcimbar will try to install build products under ./dist/bin/.

To build the emscripten+WASM encoder (what cimbar.org uses), see WASM.

Usage

Encode:

  • large input files may fill up your disk with pngs!
./cimbar --encode -i inputfile.txt -o outputprefix -f

Decode (extracts file into output directory):

./cimbar outputprefix*.png -o /tmp -f

Encode and animate to window:

./cimbar_send inputfile.pdf

Performance numbers

PERFORMANCE

Implementation details

DETAILS

Room for improvement/next steps

TODO

Inspiration

Would you like to know more?

INTRODUCTION | ABOUT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].