An open API service indexing awesome lists of open source software.

https://github.com/thu-cs-lab/coeconverter

Convert image / binary file to COE format
https://github.com/thu-cs-lab/coeconverter

Last synced: 25 days ago
JSON representation

Convert image / binary file to COE format

Awesome Lists containing this project

README

        

# CoeConverter

本项目提供了两个工具,用于将图片或二进制文件转换为 COE 格式。

## 依赖

本项目至少需要 Python 3.7 以上,在 Windows / Linux / macOS 均经过测试。

克隆本项目,并运行 `pip3 install -r requirements.txt` 下载依赖后,即可直接运行。

## pic2coe

将任何 OpenCV 支持的图片格式转换为 COE 文件。运行 `python3 pic2coe.py --help` 可查看程序支持的所有选项,解释如下:

* `mode` 表示转换图片的模式(灰度或者 RGB 彩色);
* `channel_width` 表示图片每个颜色通道的位宽,默认为 8(数设实验板 HDMI 接口每个颜色通道支持的最大位宽);
* `word_width` 表示 COE 中每个字(即一个地址对应的数据)的宽度,它必须为一个像素位宽的整数倍(在灰度模式下为 1 倍的 `channel_width`,在彩色模式下为 3 倍的 `channel_width`);如果不指定或者设置为 -1,表示自动设置为一个像素的位宽;
* `threshold` 表示二值化时使用的像素阈值。该选项只在 `channel_width` 为 1 时起作用;如果后者大于 1,则总是截取最高的几位;
* `dump_radix` 为输出 COE 文件的数据格式,可以为二进制或者十六进制。

一个额外的要求是,图片的像素数量能够整除每个字中像素的数量;也就是说,图片需要能够刚好装入整数个字中。

一些例子:

* `-m gray -c 4 -w 16 -r HEX`:将图片输出为灰度,每个像素位宽为 4,每个字中包含 4 个像素(位宽为 16),输出格式为十六进制
* `-m rgb -c 8 -w -1 -r HEX`:(默认设置)将图片输出为 RGB 三个通道,每个像素位宽为 24(3 * 8),每个字包含 1 个像素(位宽为 24),输出格式为十六进制

在 COE 文件的每个字中,像素按顺序从低位向高位排列;一个像素中,通道顺序由低到高为 R、G、B。举个例子,如果有 RGB 值为 `(1, 2, 3)` 和 `(4, 5, 6)` 的两个像素排列在同一个字中,并且通道宽度为 3,则对应转换后的数据为 `110_101_100_011_010_001`。

## bin2coe

将任何二进制文件转换为 COE 文件。运行 `python3 bin2coe.py --help` 可查看程序支持的所有选项,含义与 `pic2coe` 中相同。

本程序要求 `word_width` 为 8 的倍数(即每个 word 中含有整数个字节)。如果文件长度不是 word 的整数倍,则会自动在最后填充零。