K210学习笔记(2-sensor摄像头的使用)

一、sensor库

 

1.1. 初始化单目摄像头

重置并初始化单目摄像头

1|sensor.reset([, freq = 24000000[, set_regs=True[, dual_buff=False]]])

1.1.1. 参数:

·freq: 设置摄像头的时钟频率,越高,帧率越高,但是画质可能更差。默认 24MHz ,可以适当调低。

· set_regs: 允许程序写摄像头寄存器,默认为 True 。 如果需要自定义复位序列,可以设置为 False , 然后使用 sensor._write_reg(addr, value) 函数自定义写寄存器序列。

· dual_buff: 默认为False 。运行使用双缓冲,会增高帧率,但是同时内存占用也会增加(大约为 384KiB)

· choice: 指定需要搜索的摄像头类型, ov类型(1),gc类型(2),mt类型(3),不传入该参数则搜索全部类型摄像头

1.1.2. 返回值

一般使用:sensor.init()即可

1.3. 设置帧大小

用于设置摄像头输出帧大小,K210最大支持VGA格式,大于VGA将无法获取图像

(MaixPy开发板配置的屏幕是320*240分辨率,推荐设置为QVGA格式)

1|sensor.set_framesize(framesize[, set_regs=True])

1.3.1 参数

· framesize: 帧大小

· set_regs: 允许程序写摄像头寄存器,默认为True 。如果需要自定义设置帧大小的序列,可以设置为 False ,然后使用 sensor.__write_reg(addr, value) 函数自定义写寄存器序列

1.3.2 返回值

· True: 设置成功

· False: 设置错误

一般使用:sensor.set_framesize(sensor.QVGA)

常用的 framesize 参数有下面这些:

`sensor.QQVGA:  160*120;

`sensor.QVGA:  320*240;

`sensor.VGA:  640*480;

1.4. 设置帧格式

用于设置摄像头输出格式(MaixPy开发板配置的屏幕使用的是RGB565,推荐设置为RGB565格式)

1|sensor.set_pixformat(format[, set_regs=True])

1.4.1. 参数

· format: 帧格式

· set_regs: 允许程序写摄像头寄存器,默认为True 。如果需要自定义设置帧大小的序列,可以设置为 False ,然后使用 sensor.__write_reg(addr, value) 函数自定义写寄存器序列

(可选的帧格式有GRAYSCALE, RGB565, YUV422)

1.4.2. 返回值

· True:设置成功

· False:设置错误

一般使用: sensor.set_pixformat(sensor.RGB565)

可选用的帧格式为: GRAYSCALE(灰度), RGB565, YUV422

1.5. 图像捕捉控制

图像捕捉功能控制

1|sensor.run(enable)

1.5.1 参数

· enable : 1 表示开始抓取图像,0表示停止抓取图像

1.5.2 返回值

· True :设置成功

· False : 设置错误

1.6. 拍摄图像

使用摄像头拍摄一张图片

1|sensor.snapshot()

1.6.1. 参数

1.6.2. 返回值

· img :返回的图像对象

1.7. 摄像头控制

关闭摄像头/切换摄像头

1| sensor.shutdown(enable/selsect)

1.7.1. 参数

单目摄像头

·enable: True表示开摄像头,False表示关摄像头

双目摄像头:

· select: 通过写入0或1来切换摄像头。

1.7.2. 返回值

1.8. 跳帧

跳过指定帧数或者跳过指定时间内的图像,让相机图像在改变相机设置后稳定下来

1|sensor.skip_frames(n, [, time])

1.8.1.参数

· n: 跳过n帧图像

· time:跳过指定时间,单位为ms

(若 n 和 time 皆未指定,该方法跳过300毫秒的帧;若二者皆指定,该方法会跳过 n 数量的帧,但将在 time 毫秒后返回)

1.8.2. 返回值

1.9. 分辨率宽度

获取摄像头分辨率宽度

1|sensor.width()

1,9.1. 参数

1.9.2. 返回值

· int 类型的摄像头分辨率宽度

1.10. 分辨率高度

获取摄像头分辨率高度

1| sensor.height()

1.10.1 参数

1.10.2. 返回值

· int 类型的摄像头分辨率高度

1.11. 获取帧缓冲

获取当前帧缓冲区

1|sensor.get_fb()

1.11.1. 参数

1.11.2. 返回值

· image 类型的对象

1.12. 获取ID

获取当前摄像头ID,需要在摄像头reset之后才能读取到id号

1|sensor.get_id()

1.12.1. 参数

摄像头的id号

1.12.2. 返回值

· int 类型的ID

1.14. 设置对比度

设置相机对比度

1|sensor.set_contrast(contract)

1.14.1. 参数

· constrast:摄像头对比度,范围为[-2,+2]

1.14.2. 返回值

· True :设置成功

· Fales :设置错误

1.15. 设置亮度

设置摄像头亮度

1| sensor.set_brightness(brightness)

1.15.1. 参数

· brightness :摄像头亮度,范围为[-2,+2]

1.15.2. 返回值

· True : 设置成功

· False: 设置错误

1.16. 设置饱和度

设置摄像头饱和度

1|sensor.set_saturation(saturation)

1.16.1. 参数

· constrast :摄像头饱和度,范围为[-2,2]

1.16.2. 返回值

· True:设置成功

· False:设置错误

1.17. 设置自动增益

设置摄像自动增益模式

1| sensor.set_auto_gain(enable,gain_gb)

1.17.1. 参数

· enable:1表示开启自动增益,0表示关闭自动增益

· gain_db:关闭自动增益时,设置摄像头固定增益值,单位为dB

若要追踪颜色,需要关闭自动增益

1.17.2. 返回值

1.18. 获取增益值

获取摄像头的增益值

1|sensor.get_gain_db()

1.18.1. 参数

1.18.2. 返回值

· float 类型的增益值

1.19. 设置水平镜像

设置水平镜像

1| sensor.set_hmirror(enable)

1.19.1. 参数

· enable:1表示开启水平镜像;0表示关闭水平镜像

1.19.2. 返回值

1.20. 设置镜头垂直翻转

设置摄像头垂直翻转

1| sensor.set_vflip(enable)

1.20.1. 参数

· enable:1表示开启,0表示关闭

1.20.2. 返回值

1.21. 写入寄存器

往摄像头寄存写入指定值

1| sensor.__write_reg(address, value)

1.21.1. 参数

· adress:寄存器地址

· value: 写入值

1.21.2. 返回值

1.22. 读取寄存器

读取摄像头寄存器值

1|sensor.__read_reg(adress)

1.22.1. 参数

· address :寄存器地址

1.22.2. 返回值

· int 类型的寄存器值

参考:sensor(摄像头) - Sipeed Wiki

二、调用摄像头并将拍摄画面显示在LCD屏幕 

 

# Untitled - By: jiang - 周六 7月 22 2023

import lcd # 导入屏幕类
import sensor # 导入摄像头类

lcd.init() # 初始化屏幕

sensor.reset() # 重置摄像头
sensor.set_pixformat(sensor.RGB565) # 设置帧格式为RGB565
sensor.set_framesize(sensor.QVGA) # 设置帧大小为320*240像素
sensor.run(1) # 图像捕捉启动

while (True): # 写条件判断是为了让语句一直执行。S
    img = sensor.snapshot() # 创建图像变量,存储摄像头拍摄的照片,sensor.snapshot()返回值为图像类别
    lcd.display(img) # 在LCD屏幕上显示摄像头拍摄的图片

 

  • 25
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
你好!感谢提问。下面是有关 K210 学习笔记五中串口通信的一些内容: 在 K210 开发板上,串口是一种常见的通信接口,用于将数据从一个设备传输到另一个设备。串口通信通常使用 UART (Universal Asynchronous Receiver/Transmitter) 协议。 要在 K210 上进行串口通信,首先需要使用两个引脚:一个用于接收数据(RX),一个用于发送数据(TX)。这些引脚可以通过 GPIO 端口与外部设备连接。 在 K210 的开发环境中,可以使用 MaixPy 或者 Kendryte Standalone SDK 进行串口编程。 在 MaixPy 中,可以使用 `uart` 模块来进行串口通信。例如,要初始化一个串口对象并设置波特率为 115200,可以使用以下代码: ```python from machine import UART uart = UART(UART.UART1, 115200) ``` 然后,可以使用 `uart.write()` 函数发送数据,使用 `uart.read()` 函数接收数据。例如: ```python uart.write("Hello, world!\n") data = uart.read(10) ``` 在 Kendryte Standalone SDK 中,可以使用 `uart.h` 头文件中的函数来进行串口通信。例如,要初始化一个串口对象并设置波特率为 115200,可以使用以下代码: ```c #include "uart.h" uart_init(UART_DEVICE_1, 115200); ``` 然后,可以使用 `uart_send_data()` 函数发送数据,使用 `uart_receive_data()` 函数接收数据。例如: ```c uart_send_data(UART_DEVICE_1, "Hello, world!\n", 14); char buffer[10]; uart_receive_data(UART_DEVICE_1, buffer, 10); ``` 以上是关于 K210 学习笔记五中串口通信的简要介绍。如果你有更具体的问题,请随时提问!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江弦凤歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值