2651浏览
查看: 2651|回复: 1

[官方教程] 【新手基础教程】基本图像处理:图像获取和...

[复制链接]
本帖最后由 猪百岁 于 2021-3-22 10:37 编辑

基本图像处理:图像获取和显示

获得图像

可以从摄像头获得图像,也可以从文件系统读取图片文件, 也可以从网络获取图片

1. 从摄像头获取

import sensor, lcd

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames()

img = sensor.snapshot()
print(img)
  • import sensor: 首先导入内置的sensor(摄像头)库
  • sensor.reset(): 初始化摄像头,这里失败需要检查硬件
  • sensor.set_pixformat(sensor.RGB565): 设置摄像头为RGB565格式,默认都是用RGB565即可
  • sensor.set_framesize(sensor.QVGA): 分辨率为QVGA,即320x240
  • sensor.run(1): 开始运行,在现在的版本中也可以不调用,在上面设置完成后,摄像头会自动开始运行
  • sensor.skip_frames(): 摄像头刚启动时,图像质量还没稳定,所以跳过一些图像
  • sensor.snapshot():从摄像头取一帧图像数据,返回值是一张图像的对象

除了以上的函数, 你可能还需要设置图像为镜像(hmirror),比如前置摄像头; 或者上下翻转(vflip), 以及白平衡等等, 具体看 sensor 模块的 API 手册

2. 从文件读取

import image

img = image.Image("/sd/test.jpg")
print(img)

当然你也可以把图片保存到文件系统`

img.save("/sd/test2.jpg", quality=95)

3. 从内存读取(或者网络读取)

可以先将文件读取到内存, 具体是从哪里读取的看你的应用了, 比如网络,或者串口 SPI 等等, 构造一个 bytes对象

import image

jpeg_buff = b'\xFF'   # jpeg buffer
img = image.Image(jpeg_buff, from_bytes = True)
print(img)

3的例程不能直接跑,会提示格式错误。因为b'0xff'并非图片,需要现将图片存入jpeg_buff后,才可运行此例程。

4. 直接创建一个空白图像

import image

img = image.Image(size=(320, 240))

这张图片是全黑的空白图像

显示图片

显示图片很简单, 直接使用 lcd 模块,调用函数进行显示即可, 如下:

import lcd, image

lcd.init()

img = image.Image("/sd/test.jpg")
lcd.display(img)

但是不同的屏幕初始化序列可能不一样, 在lcd.init的时候有很多可选参数, 具体看 API 文档的描述,常见的如下

对于 IPS 屏幕,需要反色:

lcd.init(type=2)

对于屏幕体质不是很好, 需要降低频率,或者体质很好需要超频:

lcd.init(freq = 15000000)

另外, 也可是设置屏幕的旋转方向:

lcd.rotation(2)

参数是0~3, 分别代表顺时针旋转 0度 90度 180度 270度

更多方法, 请参考 lcd 文档

猪百岁  初级技匠
 楼主|

发表于 2021-3-22 10:35:45

好的,谢谢大佬的提醒
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail