用e-paper做普普风格影像显示

这次使用的元件是1.54inch_e-paper_b (黑白红显示)

Pin Layout

https://ithelp.ithome.com.tw/upload/images/20210703/20119608iwIgzzWfVC.jpg

  • VCC -> 3.3
  • GND -> GND
  • DIN -> MOSI
  • CLK -> SCLK
  • CS -> 24 (Physical, BCM: CE0, 8)
  • D/C -> 22 (Physical, BCM: 25)
  • RES -> 11 (Physical, BCM: 17)
  • BUSY -> 18 (Physical, BCM: 24)

先大概简单介绍一下该函式库,不用特别下载安装依赖库设定环境,函式库直接带入套用就可以使用了

程序运作程序大致为:

1. 呼叫epd物件

epd = epd1in54b.EPD()

2. 初始化epd物件

epd.init()

3. 清空 frame_black 和 flame_red的缓冲器

    frame_black = [0xFF] * int((epd.width * epd.height / 8))
    frame_red = [0xFF] * int((epd.width * epd.height / 8))

4. 基本功能

(1).画线 epd.draw_line

(2).空心方 epd.draw_rectangle

(3).空心圆 epd.draw_circle

(4).实心方 epd.draw_filled_rectangle

(5).实心圆 epd.draw_filled_circle

(6).文字 epd.display_string_at

(7).载入图片

frame_black = epd.get_frame_buffer(Image.open('图片一'))
frame_red = epd.get_frame_buffer(Image.open('图片二'))

(8).显示图层 epd.display_frame(frame_black, frame_red)

电子墨水性质

在显示的时候黑色电子墨水会先显示并且可以呈现灰阶效果, 随後红色电子墨水以晕染的型态浮现在黑色电子墨水上层.

接下来就利用以上电子墨水的特性,以OpenCV来设计影像转换的演算法,参考如下图:

https://ithelp.ithome.com.tw/upload/images/20210703/20119608iumf7TF1pb.jpg

frame_black 作为勾勒图像轮廓的线条使用,frame_red 作为填满封闭区域使用

说明

frame_red: 图像经过灰阶处理後以THRESH_BINARY二值化,匡列出涂满的部位,注意区域色彩如果明度太高,THRESH_BINARY的参数没跟着校正的话,会匡列不出涂满区域,请参考色彩原理

frame_black: 图像经过canny找出边缘轮廓後,用dilate膨胀加粗轮廓(膨胀这段可根据图像需求追加),再用THRESH_BINARY_INY反转阴阳.

成果

原图
https://ithelp.ithome.com.tw/upload/images/20210703/20119608kSgA8oCS6o.jpg

frame_redhttps://ithelp.ithome.com.tw/upload/images/20210703/20119608XBLKWGEQIx.jpgframe_blackhttps://ithelp.ithome.com.tw/upload/images/20210703/20119608YXSC9EJNgQ.jpg

display_frame
https://ithelp.ithome.com.tw/upload/images/20210703/20119608SybcwH3Nu5.jpg

Article from

https://github.com/KaliChen/e-paper_imagePopArt


<<:  资料结构与演算法[3] - List和SortedList与BinarySearch

>>:  测试iT邦帮忙,记录学习历程

Eloquent ORM - 编辑资料

编辑单一资料 如果用 Route::resource 建立 API 的话,编辑单一资料的路由会是 请...

Day 03-Terraform State 之你的 Local State 不是我的 State

Terraform State 之你的 Local State 不是我的 State State 是...

Day18 PHP的常用函数3:时间函数

时间函数 世界各国表示时间的方式不一样,存储不方便,计算不方便,不同的时间表示方式影响,不利於沟通和...

冒险村18 - Config

18 - Config 这篇将介绍与上篇 Configatron 相同功能类似的 Gem - Con...

Day4- D3选取器:Selection

本篇大纲:selection 重点概述、selection 提供的 API、selection 调...