例程运行及错误

debug

常见错误提示

ImportError:no module named xxx

原因:没有把stepper.py这个文件拖到你的板子里。
拖过去之后,需要重启,使模块生效。

MemoryError:FB Alloc Collision!!!

原因:模板匹配的模板文件太大了,内存爆了

AttributeError:‘tuple’ object has no attrbute ‘rect’

原因:一个tupple没有rect这个方法。
固件和IDE不匹配,升级固件就好了。
防患于未然,希望自己不要出现以上错误。

记录耗费时间

假如运行程序后,图像一卡一卡的,那么说明帧率小

例程

OpenMV与OpenCV的区别

OpenMV是一个硬件项目,集成了图像的算法,硬件是专用的(开源)。

OpenCV是一个通用的软件项目,需要操作系统的支持,在嵌入式上跑需要移植和裁剪相当大的代码量。

例程

01基础

在这里插入图片描述

02板级控制

arduino_i2c_slave 从设备

arduino_spi_slave 从设备

注:以上两个例程,未实现,以上研究一下arduino。

cpufreq_scaling CPU频率缩放

此示例显示如何使用cpufreq模块动态更改CPU频率。
在这里插入图片描述
注:maixpy好像没有这个模块

没有把stepper.py这个文件拖到你的板子里。见:模块的使用
拖过去之后,需要重启,使模块生效
但是小白这个板子没有找到maixpyU盘main.py。

openmv运行如下,cpu频率倍增。
在这里插入图片描述

i2c_control i2c控制

注:需要插入Thermopile扩展板,未实现。
pyb模块在Maixpy 也没有。
在这里插入图片描述
OpenMv实践
在这里插入图片描述
那为什么是有上图这个问题呢,经过查询,个人感觉是没有确认本机的从机设备地址

注:未实践,需要lic设备

大家在使用Ginkgo USB-I2C适配器,有个非常重要的信息就是所控制的从机地址必须要知道,否则就无法正确的和I2C从机进行通信,一般来说,在I2C设备的数据手册中都会明确提出这个设备的I2C地址是多少,不过在有的时候,可能手边没有这个设备的地址信息,但是也想和它建立通信,这种情况怎么办呢?下面我们就可以用我们的适配器并配合我们提供的一个小工具来找到这个设备的地址。
实现的基本原理,我们先假设这个I2C从机设备是7bit模式地址,然后我们以此发送所有地址数据,然后判断从机是否正常应答,如果正常应答了,说明这个地址就是这个I2C从机的地址,否则就不是他的地址。
软件界面如下:
在这里插入图片描述
从软件输出的信息可以看到,当发送0xD0地址的时候,从机正常应答了,而发送其他地址的时候从机都没应答,这就能说明从机设备地址就是0xD0。

read_adc读取ADC

在这里插入图片描述

rtc实时时钟

在这里插入图片描述
在这里插入图片描述

spi_control spi控制

使用OpenMV的SPI总线。
LCD 扩展板没有使用内置的lcd驱动,而是使用了SPI。
注:未实现,需要插入LCD扩展板来运行这个例子

servo_control舵机控制

注:未实现,未连接舵机。

timer_control定时器控制

定时器
在这里插入图片描述
回调函数
在这里插入图片描述
如:tim = Timer(4, freq=1)
tim.callback(tick)

usb_vcp usb虚拟串口

使用USB VCP类按需将图像发送到PC
注:未实现,需传图像

03Drawing-画图

copy2fb把图像复制到framebuffer

# 导入 image
img = image.Image("/example.bmp", copy_to_fb=True)

注:未实现,未插SD卡,未插入图片
其他有pyb模块未实现

已实现:

color_drawing在图像里画线

运行程序,发现灰、红、绿、蓝循环变色。
在这里插入图片描述
在这里插入图片描述
灰度图

 c = ((i * 255) + (img.width()/2)) / img.width()
        img.draw_line((i, 0, i, img.height()-1), color = int(c))

画线函数img.draw_line((x0, y0, x1, y1), color=White),从(x0,y0),到(x1,y1)画一条直线。如果是灰度图,color是0-255的一个数,0代表黑255代表白;如果是RGB图像,color是(r,g,b)的一个元组,r g b分别代表红绿蓝。

RGB图

 for i in range(img.width()):
        c = ((i * 255) + (img.width()/2)) / img.width()
        img.draw_line((i, 0, i, img.height()-1), color = [int(c), 0, 0])

因为是rgb图,所以color = [int(c), 0, 0],而不是一个单纯的0-255的数字。
注:python的元组类型一定要用[ ]或者()括起来,否则会报错。

同理

绘制箭头
在这里插入图片描述
如:img.draw_arrow(x0, y0, x1, y1, color = (r, g, b), size = 30, thickness = 2)

绘制圆形
在这里插入图片描述
如:img.draw_circle(x, y, radius, color = (r, g, b), thickness = 2, fill = False)

绘制十字
在这里插入图片描述
如:img.draw_cross(x, y, color = (r, g, b), size = 10, thickness = 2)

绘制椭圆
img.draw_ellipse(x, y, radius_x, radius_y, rot, color = (r, g, b), thickness = 2, fill = False)
注:如果第一个参数是缩放器,则此方法需要查看x,y,radius x和radius y。 否则,它需要一个(x,y,radius_x,radius_y)元组。

flood_fill洪水填充

洪水填充就是 像洪水一样填充图像中低矮凹陷的地方。如键盘间隙。
在这里插入图片描述
在这里插入图片描述
例:
img = sensor.snapshot().flood_fill(x, y, seed_threshold=0.05, floating_thresholds=0.05, color=(255, 0, 0), invert=False, clear_background=False)

image_drawing绘制图片

在帧缓冲区中绘制图像。在这种情况下,绘制我们当前正在绘制的图像,这会导致图形故障。 传递可选的掩码图像以控制绘制的像素。
在这里插入图片描述
如:img.draw_image(img, w//4, h//4, x_scale=0.5, y_scale=0.5)
在这里插入图片描述

keypoints_drawing绘制特征点

img.draw_keypoints([(x, y, rot)], color = (r, g, b), size = 20, thickness = 2, fill = False)
在这里插入图片描述

line_drawing绘制线段

在这里插入图片描述
如:img.draw_line(x0, y0, x1, y1, color = (r, g, b), thickness = 2)

rectangle_drawing绘制线段

在这里插入图片描述

text_drawing绘制文字

在这里插入图片描述
在这里插入图片描述
如:img.draw_string(x, y, “Hello World!”, color = (r, g, b), scale = 2, mono_space = False)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值