查看: 1820|回复: 3

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

[复制链接]
  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 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上节约宝贵内存)

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

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

    欢迎大家指点: )

  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 签到天数: 47 天

    [LV.5]常住居民I

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

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

    我这几乎是手调完成了局部阈值的二值化,84x48 的二值图像真的太马赛克了
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2019-4-30 01:20 | 显示全部楼层
    看来你需要一款取模软件
    https://www.arduino.cn/thread-42174-1-1.html
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
    一块扩展板完成Arduino的1
    实验目录(动手做): 一、LED 实验 01 Blink:D13蓝色 LED 闪烁 02 Blink2:D12、D
    OLED 128*64自制可达10000000个选项的菜单(已更新)
    OLED 128*64自制可达10000
    OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
    【Arduino】u8g2中文字库制作教程 小白请进
    【Arduino】u8g2中文字库
    我知道对于这个话题许多大佬们都会,发这个贴子也算是炒冷饭了,所以一开始我也十分纠
    ESP8266 AT指令固件已更新至V1.7.2
    ESP8266 AT指令固件已更新
    ESP8266在乐鑫官网的AT指令固件已更新至V1.7.2,有兴趣的同学自行至官网下载。 官网链
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表