#openmv的代码

import sensor, image, time

import json

from pyb import UART

# For color tracking to work really well you should ideally be in a very, very,

# very, controlled enviroment where the lighting is constant...

blue_threshold   = ( 0, 60, -20, 64, -128, 0)

# You may need to tweak the above settings for tracking green things...

# Select an area in the Framebuffer to copy the color settings.

#p4_10,p5_11,gnd_gnd

sensor.reset() # Initialize the camera sensor.

sensor.set_pixformat(sensor.RGB565) # use RGB565.

sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.

sensor.skip_frames(10) # Let new settings take affect.

sensor.set_auto_whitebal(False) # turn this off.

clock = time.clock() # Tracks FPS.

uart = UART(3, 115200)

'''

扩宽roi

'''

def expand_roi(roi):

# set for QQVGA 160*120

extra = 5

win_size = (160, 120)

(x, y, width, height) = roi

new_roi = [x-extra, y-extra, width+2*extra, height+2*extra]

if new_roi[0] < 0:

new_roi[0] = 0

if new_roi[1] < 0:

new_roi[1] = 0

if new_roi[2] > win_size[0]:

new_roi[2] = win_size[0]

if new_roi[3] > win_size[1]:

new_roi[3] = win_size[1]

return tuple(new_roi)

K=680 #the value should be measured

while(True):

clock.tick() # Track elapsed milliseconds between snapshots().

img = sensor.snapshot() # Take a picture and return the image.

blobs = img.find_blobs([blue_threshold], area_threshold=150)

if blobs:

#如果找到了目标颜色

data=[]

#print(blobs)

for blob in blobs:

#迭代找到的目标颜色区域

b = blob[0]

is_circle = False

max_circle = None

max_radius = -1

new_roi = expand_roi(blob.rect())

Lm = (blob[2]+blob[3])/2

length = K/Lm

length = str(length)

length = float(length)

for c in img.find_circles(threshold = 2000, x_margin = 10, y_margin = 10, r_margin = 10, roi=new_roi):

is_circle = True

# img.draw_circle(c.x(), c.y(), c.r(), color = (255, 255, 255))

if c.r() > max_radius:

max_radius = c.r()

max_circle = c

if is_circle:

# 如果有对应颜色的圆形 标记外框

# Draw a rect around the blob.

img.draw_rectangle(new_roi) # rect

img.draw_rectangle(blob.rect()) # rect

#用矩形标记出目标颜色区域

img.draw_cross(blob[5], blob[6]) # cx, cy

img.draw_circle(max_circle.x(), max_circle.y(), max_circle.r(), color = (0, 255, 0))

img.draw_circle(max_circle.x(), max_circle.y(), max_circle.r() + 1, color = (0, 255, 0))

data.append((max_circle.x(),max_circle.y(),length))

#data.append(length)

data_out = json.dumps(set(data))

uart.write(data_out +'\n')

print('you send:',data_out)

else:

print("not found!")

else:

print("not found!")

#print(clock.fps()) # Note: Your OpenMV Cam runs about half as fast while

# connected to your computer. The FPS should increase once disconnected.

openmv串口发送数据_关于arduino和openmv串口通信的问题相关推荐

  1. python串口发送数据_第六课python来写串口助手-串口发送数据

    https://m.toutiaocdn.com/group/6716026491689239044/?app=news_article&timestamp=1563807838&re ...

  2. stm32串口发送数据的配置,以及通过串口发送结构体数组总是多一个00字节的问题

    最近用stm32编写串口发送程序,在硬件方面需要做如下准备: 1.stm32开发板,这里我的是stm32f030f4p4开发板,单片机的串口发送的引脚为PA9-TX,PA10-RX. 2.为了调试串口 ...

  3. arduino向串口发送数据时掉包_[技术]清楚简单,一种串口触摸屏的开发流程和方法介绍...

    1.什么是串口触摸屏 触摸屏是工业控制上很常见的人机交互部件,很多设备.系统都在使用它,它至少有两个功能:显示,触摸控制. 串口触摸屏是采用串行数据通信协议进行数据交换的触摸屏,具有简单.可靠.易于操 ...

  4. MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据

    MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据 [目录] - 1.无线通信模块设置 - 1.1 设置参数 - 1.2 调试步骤 - 2.按键与通信格式 - 2.1 P ...

  5. OpenMV:23串口发送数据

    文章目录 产品 Hello World 简单的数据发送 本节讲解 如何使用OpenMV通过串口来发送数据 OpenMV 是可以直接通过串口发送字符串的. 为什么要用串口呢?因为要时候需要把信息传给其他 ...

  6. python树莓派串口通信实例_树莓派通过串口发送数据

    可以通过串口登陆树莓派,也可以通过串口向其他主机发送数据.树莓派的串口接受数据科技爱好者博客已经写过,可以参考这篇文章:树莓派与arduino串口通信实践.这篇文章教大家如果通过树莓派的串口发送数据. ...

  7. java串口发送16进制_串口发送数据——字符串发送与十六进制发送的区别

    在计算机中,数据是以二进制的形式存储的,例如十进制 1(10)在计算机中用 0000 0001(2)来表示.我们在用串口发送数据的时候首先将待数据转换为对应的ASCII码,然后再将这些ASCII码按照 ...

  8. 向STM32串口发送数据的标准函数

    向STM32串口发送数据的标准函数 例子:1 void UART_Send_Message(u8 *Data,u8 lenth) {while(lenth--){USART_SendData(USAR ...

  9. 安捷伦万用表--Agilent34401A数字万用表串口发送数据只上位机使用说明

    Agilent34401A数字万用表串口发送数据使用说明 安捷伦34410A万用表可以通过背后的RS232接口与电脑连接,进行串口通信. 仪表的串口有两种工作方式,一种是交互模式–既能接收命令,又能发 ...

最新文章

  1. 2020年,对薪资不满意的程序员要注意了...
  2. IIS部署ASP.Net Core 502.5错误和解决
  3. js 后台调用前台的JS
  4. 下列代码之后的结果为()?
  5. KeyDown,KeyPress和KeyUp详解(转)
  6. ORA-01506: missing or illegal database name
  7. python3怎样交换数字顺序_python中怎么交换列的顺序
  8. 关于SQLSERVER的全文目录跟全文索引的区别
  9. 自己封装的一个原生JS拖动方法。
  10. 中蒙俄经济走廊背景_上海外国语大学师生代表团参观访问G60科创走廊俄罗斯院士创新基地...
  11. 【Kafka】kafka 客户端 控制台 flink 都无法消费的情况
  12. hive 建表_Hive建表和内外部表的使用
  13. matlab检测串口数据帧头,用matlab从串口读入数据产生图像进行分析遇到的问题,求大虾帮助!...
  14. Android上按钮解决快速点击问题
  15. 工具类 --UUIDUtil ---32位UUID生成器
  16. 二进制负数转换成十进制
  17. 从通信的角度理解现场总线
  18. 拼刀刀店铺后台的参数anti-content逆向分析
  19. 用python turtle画人_家里蹲太孤单?用 Python 画一只单身狗
  20. 毕业四年后的程序员继续租房子

热门文章

  1. Java 8 Friday:语言设计很微妙
  2. JAX-RS 2.0:自定义内容处理
  3. 亚马逊Simple Worklfow服务的骆驼演示
  4. 选择技术栈构建通用平台
  5. 使用Maven Jetty插件
  6. Spring集成–第1节– Hello World
  7. JavaFX 2:创建登录表单
  8. 使用JAXB从XSD生成XML
  9. Java中,我自己定义的某个类,去实现某个接口,是否必须实现该接口的全部抽象方法呢?
  10. mysqls压力测试怎么用_MySQL压力测试工具使用