Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thu-cs-lab/MifConverter
Convert image / binary file to MIF format
https://github.com/thu-cs-lab/MifConverter
Last synced: 2 months ago
JSON representation
Convert image / binary file to MIF format
- Host: GitHub
- URL: https://github.com/thu-cs-lab/MifConverter
- Owner: thu-cs-lab
- License: mit
- Created: 2020-04-21T15:37:17.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-04-21T15:47:06.000Z (almost 5 years ago)
- Last Synced: 2024-08-03T01:38:13.795Z (6 months ago)
- Size: 4.88 KB
- Stars: 9
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MifConverter
本项目提供了两个工具,用于将图片或二进制文件转换为 MIF 格式。
## 依赖
本项目至少需要 Python 3.7 以上,在 Windows / Linux / macOS 均经过测试。
克隆本项目,并运行 `pip3 install -r requirements.txt` 下载依赖后,即可直接运行。
## pic2mif
将任何 OpenCV 支持的图片格式转换为 MIF 文件。运行 `python3 pic2mif.py --help` 可查看程序支持的所有选项,解释如下:
* `mode` 表示转换图片的模式(灰度或者 RGB 彩色);
* `channel_width` 表示图片每个颜色通道的位宽,默认为 3 (数设实验板 VGA 接口最大支持的位宽);
* `word_width` 表示 MIF 中每个字(即一个地址对应的数据)的宽度,它必须为一个像素位宽的整数倍(在灰度/彩色模式下分别为 1/3 倍的 `channel_width`);如果不指定或者设置为 -1,表示自动设置为一个像素的位宽;
* `threshold` 表示二值化时使用的像素阈值。该选项只在 `channel_width` 为 1 时起作用;如果后者大于 1,则总是截取最高的几位;
* `dump_radix` 为输出 MIF 文件的数据格式,可以为二进制或者十六进制。一个额外的要求是,图片的像素数量能够整除每个字中像素的数量;也就是说,图片需要能够刚好装入整数个字中。
一些例子:
* `-m gray -c 4 -w 16 -r HEX`:将图片输出为灰度,每个像素位宽为 4,每个字中包含 4 个像素(位宽为 16),输出格式为十六进制
* `-m rgb -c 3 -w -1 -r HEX`:(默认设置)将图片输出为 RGB 三个通道,每个像素位宽为 9(3 * 3),每个字包含 1 个像素(位宽为 9),输出格式为十六进制在 MIF 文件的每个字中,像素按顺序从低位向高位排列;一个像素中,通道顺序由低到高为 R、G、B;同一个通道中,低位在前,高位在后。举个例子,如果有 RGB 值为 `(1, 2, 3)` 和 `(4, 5, 6)` 的两个像素排列在同一个字中,并且通道宽度为 3,则对应转换后的数据为 `110_101_100_011_010_001`。
## bin2mif
将任何二进制文件转换为 MIF 文件。运行 `python3 bin2mif.py --help` 可查看程序支持的所有选项,含义与 `pic2mif` 中相同。
本程序要求 `word_width` 为 8 的倍数(即每个 word 中含有整数个字节)。如果文件长度不是 word 的整数倍,则会自动在最后填充零。