来源:AI开发日志公众号专辑「Build Your Own X With AI」
原文链接:https://mp.weixin.qq.com/s?__biz=MzUxMjg3MjE2OA==&mid=2247486327&idx=1&sn=63ad4f7aa0638c6d5de76de811ff3826&chksm=f95c90f0ce2b19e6e8f6653136828628a490c8d75c3bd49af40331f2705adacc61b2e1b69b51#rd
图片转 C 语言数组工具
将 JPG/PNG/BMP 图片转换为 PBM 格式(800x480,1位/像素),并生成 C 语言数组代码。
截图
安装依赖
pip install -r requirements.txt
使用方法
python image_to_c.py <图片路径> [阈值] [数组名称]图片路径>
参数说明
- 图片路径
-
JPG/PNG/BMP 格式的图片文件(必需)
- 阈值
-
二值化阈值 (0-255),默认 128(可选)
- 数组名称
-
C 数组名称,默认 gImage_4in26(可选)
注意: 图片会自动缩放到 800x480 分辨率
示例
基本用法
python image_to_c.py input.jpg
指定阈值
python image_to_c.py input.png 150
指定数组名称
python image_to_c.py input.bmp 128 myImage
输出文件
工具会生成三个文件:
- output.pbm
-
标准 PBM 格式图片文件 ffplay output.pbm
- ImageData.h
-
头文件,包含数组声明
- ImageData.c
-
源文件,包含图片数据数组
输出格式示例
ImageData.h:
#ifndef GIMAGE_4IN26_H
#define GIMAGE_4IN26_H
// Image size: 800x600
// Data size: 48000 bytes
externconstunsignedchar gImage_4in26[48000];
#endif// GIMAGE_4IN26_H
ImageData.c:
#include”ImageData.h”
constunsignedchar gImage_4in26[48000] = {
/* P4 */
/* 800 480 */
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
// … 真实数据
};
PBM 头部说明:
- P4
-
PBM 二进制格式标识
- 800 480
-
图片宽度和高度
工作原理
读取图片并缩放到 800x480 分辨率
转换为灰度图并进行二值化处理
生成标准 PBM 格式文件(P4 二进制格式)
读取 PBM 文件,将文本头部作为注释
将二进制数据转换为 C 语言数组(每行16个字节)
注意事项
像素值 >= 阈值时为白色 (1)
像素值 < 阈值时为黑色 (0)
数据按行优先顺序排列
每行像素数不足 8 的倍数时,会在右侧补 0
https://github.com/build-your-own-x-with-ai/ImageConvert
https://github.com/build-your-own-x-with-ai/ImageConvert
接线
下载代码
git clone https://github.com/tuya/TuyaOpen
设置环境
. ./export.sh
查看版本
tos.py version
墨水屏代码
cd examples/e-Paper/4.26inch_e-Paper
选 T5AI
tos.py config choice
9. T5AI.config
编译
tos.py build
烧录
tos.py flash
查看 Log
tos.py monitor