【原创】使用 U8G2 库显示 XBM 图片
本帖最后由 t3486784401 于 2019-4-30 01:08 编辑最近焊了块 5110 的扩展板,没事就拿来研究 U8G2 库。尝试全屏打印图片时,
发现接口为 drawXBM/drawXBMP,于是就研究了一下。
XBM 图片格式居然是纯 C 代码的格式,也就是说图片本身就是一段 C 文本代码。
这个代码可以直接编译到 Arduino 的代码中(当然要指定 PROGMEM 定位到 FLASH 中),
于是就找了最近补番的一帧,各种抠图做了二值图,成功打印到了 5110 上。
在 U8G2 库代码的注视中了解到,使用 GIMP(Linux版PS)可以直接保存 XBM 文件。
刚巧手头一直在用这个软件(嫌PS太大还没完没了注册),也就尝试折腾了一下。
首先是原图,来自 B 站截屏(弹幕关闭):
之后使用 GIMP 进行抠图(之前一直用的 GIMP 居然可以支持另存 XBM):
二值图最后直接另存为 XBM 格式,记事本打开就是个 C 数组:
数组拷贝到 Arduino 工程里,drawXBMP 调用之:
最终效果还不错,不过 5110 屏幕像素不是正方,需要略微拉伸长度以抵消之:
工程代码就不贴了,U8G2 示例代码而已,这里说明一下函数有两个版本:
drawXBM:绘制内存 RAM 中 XBM 图像
drawXBMP:绘制 FLASH 中 XBM 图像(可以在UNO上节约宝贵内存)
--------------------------------------------------------------------------------------------
话说大家有没有什么好用的二值化软件/方法啊,这抠图再曲线调整再阈值的,真心心累。
莫非非要自己写一段大津阈值算法才能欢乐么...
欢迎大家指点: )
奈何col 发表于 2019-4-30 01:20
看来你需要一款取模软件
https://www.arduino.cn/thread-42174-1-1.html
确实是好物,不过抠图还是不能偷懒,不然阈值后就整片黑/整片白了。
我这几乎是手调完成了局部阈值的二值化,84x48 的二值图像真的太马赛克了 看来你需要一款取模软件
https://www.arduino.cn/thread-42174-1-1.html 谢谢楼主
页:
[1]