【原创】使用 U8G2 库显示 XBM 图片-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8258|回复: 3

【原创】使用 U8G2 库显示 XBM 图片

[复制链接]
发表于 2019-4-30 01:04 | 显示全部楼层 |阅读模式
本帖最后由 t3486784401 于 2019-4-30 01:08 编辑

最近焊了块 5110 的扩展板,没事就拿来研究 U8G2 库。尝试全屏打印图片时,
发现接口为 drawXBM/drawXBMP,于是就研究了一下。

XBM 图片格式居然是纯 C 代码的格式,也就是说图片本身就是一段 C 文本代码。
这个代码可以直接编译到 Arduino 的代码中(当然要指定 PROGMEM 定位到 FLASH 中),
于是就找了最近补番的一帧,各种抠图做了二值图,成功打印到了 5110 上。

在 U8G2 库代码的注视中了解到,使用 GIMP(Linux版PS)可以直接保存 XBM 文件。
刚巧手头一直在用这个软件(嫌PS太大还没完没了注册),也就尝试折腾了一下。

首先是原图,来自 B 站截屏(弹幕关闭):
1-ORIG.jpg


之后使用 GIMP 进行抠图(之前一直用的 GIMP 居然可以支持另存 XBM):
2-GIMP-THR.png


二值图最后直接另存为 XBM 格式,记事本打开就是个 C 数组:
3-GIMP-XBM.png


数组拷贝到 Arduino 工程里,drawXBMP 调用之:
2019-04-30_010619.png


最终效果还不错,不过 5110 屏幕像素不是正方,需要略微拉伸长度以抵消之:
5-Run.JPG


工程代码就不贴了,U8G2 示例代码而已,这里说明一下函数有两个版本:
drawXBM:绘制内存 RAM 中 XBM 图像
drawXBMP:绘制 FLASH 中 XBM 图像(可以在UNO上节约宝贵内存)

--------------------------------------------------------------------------------------------

话说大家有没有什么好用的二值化软件/方法啊,这抠图再曲线调整再阈值的,真心心累。
莫非非要自己写一段大津阈值算法才能欢乐么...

欢迎大家指点: )

 楼主| 发表于 2019-4-30 01:52 | 显示全部楼层
奈何col 发表于 2019-4-30 01:20
看来你需要一款取模软件
https://www.arduino.cn/thread-42174-1-1.html

确实是好物,不过抠图还是不能偷懒,不然阈值后就整片黑/整片白了。

我这几乎是手调完成了局部阈值的二值化,84x48 的二值图像真的太马赛克了
发表于 2019-4-30 01:20 | 显示全部楼层
看来你需要一款取模软件
https://www.arduino.cn/thread-42174-1-1.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 11:47 , Processed in 0.143476 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表