串口通信
OpenMV本质还是一个单片机,可以通过调用pyb中的UART使用串口通信,注意发送的数据类型为字符串,可以通过json.dumps()进行字符串转换
from pyb import UART
uart = UART(3, 9600)
uart.write('hello')
uart.read(5)
数据类型转换
blob色块的各类方法:http://book.openmv.cc/image/blob.html
通过方法得到的数据类型为int,需要对其进行一系列操作
1.对其进行0拓展,保证每个数据4位数,方便单片机进行解析
2.进行0拓展的时候,先利用json.dumps()将坐标值转换为字符串,然后利用list将字符串转换为列表,利用列表的insert()方法在头部进行插入
3.完成0拓展之后,将list转换为字符串,利用’’.join()
附上全部代码
功能描述:找到最大的红色色块的中心,通过串口发送其中心坐标数据
import sensor, image, time
import json
from pyb import UART
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
clock = time.clock()
def Expand_String(str):
while(len(str)<4):
str.insert(0,'0')
return str
red_range=(43, 64, 27, 127, -128, 127)
uart=UART(3,115200)
while(True):
clock.tick()
img = sensor.snapshot()
blobs=img.find_blobs([red_range])
for blob in blobs:
img.draw_rectangle(blob.rect())
if blobs!=[]:
blob_max=blobs[0]
for blob in blobs:
if blob_max.area()<blob.area():
blob_max=blob
img.draw_cross(blob_max.cx(),blob_max.cy(),size=5,color=(0,255,0))
centre_x=list(json.dumps(blob_max.cx()))
centre_y=list(json.dumps(blob_max.cy()))
Expand_String(centre_x)
Expand_String(centre_y)
centre_x=''.join(centre_x)
centre_y=''.join(centre_y)
uart.write(centre_x+' '+centre_y+'\r\n')
print(centre_x+' '+centre_y+'\n')
else:
print('0000'+' '+'0000'+'\n')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)