libcimbar icon indicating copy to clipboard operation
libcimbar copied to clipboard

Proprsal: Add offline Python CLI decoder for Cimbar Frames

Open ohmic-guy opened this issue 6 months ago • 1 comments

Feature Request: Offline Python CLI Decoder

Hi team,

I'm currently studying Cimbar's fascinating approach to visual data transfer and would love to contribute while learning. One area I believe could be valuable is the development of a Python-based CLI decoder that works offline.

What It Would Do

  • Accept a folder of PNG frames (or optionally a video file)
  • Decode tile colors back into binary data
  • Reconstruct the original message/file
  • Print decoded output or save it to disk

Why This Helps

  • Makes testing/debugging easier without relying on live camera capture
  • Expands accessibility to users who prefer CLI workflows
  • Serves as a learning reference for how Cimbar encoding works under the hood
  • Could be used for scripting or automation in secure/offline environments

Why I Want to Help

I’m working on a similar prototype using Python and OpenCV, and I’d love to align my learning journey with contributing to this project. If this sounds like a useful addition, I’d be happy to build a basic version and iterate on your feedback.

Thanks for creating such an inspiring and technically rich project!

Best regards,
Ommkar Ankit , https://github.com/ohmic-guy

ohmic-guy avatar Jun 03 '25 12:06 ohmic-guy

You may want to take a look at both the C++ cli tools here: https://github.com/sz3/libcimbar/tree/master/src/exe and the prototype project, which is a python cli: https://github.com/sz3/cimbar

Some of what you're suggesting is supported already, but some is not and may be of interest. Notably:

  • nothing currently accepts a video (cimbar_recv kind of does if you ask it very nicely, but I wouldn't call it "usable")
  • nothing exposes the underlying binary data all that nicely (there are flags in cimbar and the python project to do it, but again -- it's not user friendly)
  • the python implementation is very slow, and also a bit of a mess coding wise (since it's the experiment/prototype code base).
  • the C++ implementation is fast, and possibly will have C bindings added at some point to give languages like python (and javascript!) access to a faster implementation.

But if you want to try your own hand at a python cli (perhaps one that is faster and cross-platform...), go for it. 🙂

sz3 avatar Jun 04 '25 04:06 sz3