maixpy 常用例程整理
作者:互联网
基础控制K210例程
1.1 使用屏幕和摄像头
- 例程
import sensor, lcd
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames()
lcd.init(freq=15000000)
while(True):
lcd.display(sensor.snapshot())
- 代码讲解
import sensor, lcd
: 首先导入内置的sensor
(摄像头)库和lcd
(屏幕)库sensor.reset()
: 初始化摄像头,这里失败需要检查硬件sensor.set_pixformat(sensor.RGB565)
: 设置摄像头为RGB565
格式,默认都是用RGB565
即可sensor.set_framesize(sensor.QVGA)
: 分辨率为QVGA
,即320x240
sensor.run(1)
: 开始运行,在现在的版本中也可以不调用,在上面设置完成后,摄像头会自动开始运行sensor.skip_frames()
: 摄像头刚启动时,图像质量还没稳定,所以跳过一些图像lcd.init(freq=15000000)
: 初始化 LCD, 这里传了一个参数叫freq
即频率, 是指定驱动 LCD 的时钟频率,这里是15MHz
,可以根据硬件性能调整while(True)
: 这是一个循环,循环里面的代码会被不停地运行sensor.snapshot()
:从摄像头取一帧图像数据,返回值是一张图像的对象lcd.display()
: 显示图像到 LCDlcd.display(sensor.snapshot())
: 这里就是先执行括号里的获取图像,返回值直接作为参数给 LCD 进行显示
1.2 点亮LED
- 例程
from fpioa_manager import fm
from Maix import GPIO
import time
io_led_red = 6 # 对应管脚号6
fm.register(io_led_red, fm.fpioa.GPIO0)
led_r=GPIO(GPIO.GPIO0, GPIO.OUT)
led_r.value(0)
time.sleep(1)
led_r.value(0)
- 代码讲解
- 从
fpioa_manager
包导入fm
对象,主要用于引脚和外设的映射- 从包
Maix
导入了GPIO
这个类, GPIO 外设相关操作- 定义一个变量
io_led_red
,值为6
,即Pin6/IO6
, 具体 LED 的引脚连接到了芯片的哪个引脚,请在前面的开发板介绍中看原理图- 使用
fm
(fpioa manager 的缩写)这个内置的对象来注册芯片的外设和引脚的对应关系, 这里fm.fpioa.GPIO0
是 K210 的一个 GPIO 外设(注意区分 GPIO(外设) 和引脚(实实在在的硬件引脚)的区别
), 所以把fm.fpioa.GPIO0
注册到了 引脚IO6
;- 然后定义一个
GPIO
对象led_r
, 具体参数看GPIO
API 文档, 在左边侧边栏查找。- 使用
led_r.value(1)
或者led_r.value(0)
来设置高低电平即可, 因为这里设置了低电平, 根据上面的原理图可知低电平导通,LED 灯亮
1.3 硬件加速图像处理
- 例程
import sensor
import image
import lcd
import time
lcd.init(freq=15000000)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
origin = (0,0,0, 0,1,0, 0,0,0)
edge = (-1,-1,-1,-1,8,-1,-1,-1,-1)
sharp = (-1,-1,-1,-1,9,-1,-1,-1,-1)
relievo = (2,0,0,0,-1,0,0,0,-1)
tim = time.time()
while True:
img=sensor.snapshot()
img.conv3(edge)
lcd.display(img)
if time.time() -tim >10:
break
tim = time.time()
while True:
img=sensor.snapshot()
img.conv3(sharp)
lcd.display(img)
if time.time() -tim >10:
break
tim = time.time()
while True:
img=sensor.snapshot()
img.conv3(relievo)
lcd.display(img)
if time.time() -tim >10:
break
lcd.clear()
- 代码讲解
分别对图像进行了
边缘查找
,锐化
,浮雕化
, 利用了卷积计算快速得到结果。
标签:常用,img,例程,import,lcd,time,GPIO,sensor,maixpy 来源: https://www.cnblogs.com/hnu-hua/p/16534340.html