OpenMV——串口通信+发送中心位置

2023-05-16

串口通信

OpenMV本质还是一个单片机,可以通过调用pyb中的UART使用串口通信,注意发送的数据类型为字符串,可以通过json.dumps()进行字符串转换

from pyb import UART

uart = UART(3, 9600)
uart.write('hello')
uart.read(5) # read up to 5 bytes

数据类型转换

blob色块的各类方法:http://book.openmv.cc/image/blob.html
通过方法得到的数据类型为int,需要对其进行一系列操作
1.对其进行0拓展,保证每个数据4位数,方便单片机进行解析
2.进行0拓展的时候,先利用json.dumps()将坐标值转换为字符串,然后利用list将字符串转换为列表,利用列表的insert()方法在头部进行插入
3.完成0拓展之后,将list转换为字符串,利用’’.join()

附上全部代码

功能描述:找到最大的红色色块的中心,通过串口发送其中心坐标数据

# Hello World Example
#
# Welcome to the OpenMV IDE! Click on the green run arrow button below to run the script!

import sensor, image, time
import json
from pyb import UART

sensor.reset()                      # Reset and initialize the sensor.
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA)   # Set frame size to QVGA (320x240)
sensor.skip_frames(time = 2000)     # Wait for settings take effect.
clock = time.clock()                # Create a clock object to track the FPS.

#对list进行拓展,高位补0
def Expand_String(str):
    while(len(str)<4):
        str.insert(0,'0')
    return str

#所需要寻找的颜色的LAB范围
red_range=(43, 64, 27, 127, -128, 127)
#开串口3,波特率为115200
uart=UART(3,115200)

while(True):
    clock.tick()                    # Update the FPS clock.
    img = sensor.snapshot()         # Take a picture and return the image.

    #寻找红色色块
    blobs=img.find_blobs([red_range])

    #画出所有红色色块
    for blob in blobs:
        #print(blob.rect())
        img.draw_rectangle(blob.rect())

    #找出面积最大的色块,放到blob_max
    if blobs!=[]:
        blob_max=blobs[0]
        for blob in blobs:
            if blob_max.area()<blob.area():
                blob_max=blob

        #画出blob_max的中心
        img.draw_cross(blob_max.cx(),blob_max.cy(),size=5,color=(0,255,0))

        #将int型的blob_max的中心转换成json形式(字符形式),再转换为list
        centre_x=list(json.dumps(blob_max.cx()))
        centre_y=list(json.dumps(blob_max.cy()))

        #此时用list存放的中心坐标做0拓展
        Expand_String(centre_x)
        Expand_String(centre_y)

        #将list转换为字符串形式
        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')

    #print(clock.fps())              # Note: OpenMV Cam runs about half as fast when connected
                                    # to the IDE. The FPS should increase once disconnected.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenMV——串口通信+发送中心位置 的相关文章

  • 后端对象数据为空的情况

    后端对象数据为空的情况 后端与前端对接数据形式不一致 xff0c 前端传入数据的方式 xff08 url post请求 xff0c 直接作为对象进行传递 xff09 xff0c 导致后端拿不到数据 对接数据一致 xff0c request请
  • C-动态内存和运算符重载

    titledatetagscategoriesdescription C 43 43 动态内存和运算符重载 2019 11 12 13 34 50 0800 动态内存 运算符重载 C C 43 43 简单了解一下
  • 高版本Ubuntu(如22.02)修改apt源,快速安装低版本gcc/g++

    Ubuntu不同版本默认apt install gcc安装的gcc和g 43 43 版本不同 xff0c 如Ubuntu22 04默认安装gcc g 43 43 为11版本 xff0c 高版本Ubuntu无法直接通过apt install
  • COLMAP简介及通过2D序列图像进行3D重建操作流程

    COLMAP是一种通用的运动结构 Structure from Motion SfM 和多视图立体 Multi View Stereo MVS 管道 pipeline xff0c 具有图形和命令行界面 它为重建有序和无序图像集合提供了广泛的
  • 我踩了所有ESP8266的坑,现在来个最终总结

    STM32 43 ESP8266 协议接入IOT平台 必成功 1 移植到STM32前先检查你的esp8266能不能用1 1 大概率你手里的esp8266是官方固件 刷MQTT固件1 2 ESP8266 MQTT固件 AT指令列表 xff1a
  • 进阶HAL开发——第二集-FreeRTOS

    大三了 xff0c 在保研 考研 保研加分政策改变的焦虑中渡过了2021的前5个月 好久没有认真学东西了 不管了 xff0c 先学点东西把手里的比赛做完 xff0c 加不加分都随缘 FreeRTOS HAL库 一 简介二 理解三 使用3 1
  • 百度easydl数据标注

    一 百度easydl数据标注 脚本 1 官方标注工具 xff0c 链接如下 xff0c 由lableme改进而形成 GitHub Baidu AIP Easyyibiao 2 官网数据导入格式三种分别为 xff1a 布局如图所示 2 1js
  • Python爬虫入门实例一之淘宝商品页面的爬取

    文章目录 1 爬取原界面2 代码解析3 完整代码引用源自 1 爬取原界面 今天给大家介绍第一个爬虫小例子 xff0c 使用requests库爬取淘宝商品信息 xff0c 首先想要爬取的内容如下图 2 代码解析 使用交互环境给大家带来代码解析
  • 项目实战-外卖自提柜 1.项目介绍、协议制定

    项目实战 外卖自提柜 1 项目介绍 协议制定 项目实战 外卖自提柜 2 CubeMX 43 FreeRTOS入门 项目实战 外卖自提柜 3 FreeRTOS主要API的应用 项目实战 外卖自提柜 4 FreeRTOS 堆栈分配 调试技巧 项
  • 项目实战-外卖自提柜 2. CubeMX + FreeRTOS入门

    项目实战 外卖自提柜 1 项目介绍 协议制定 项目实战 外卖自提柜 2 CubeMX 43 FreeRTOS入门 项目实战 外卖自提柜 3 FreeRTOS主要API的应用 项目实战 外卖自提柜 4 FreeRTOS 堆栈分配 调试技巧 项
  • 项目实战-外卖自提柜 3. FreeRTOS主要API的应用

    项目实战 外卖自提柜 1 项目介绍 协议制定 项目实战 外卖自提柜 2 CubeMX 43 FreeRTOS入门 项目实战 外卖自提柜 3 FreeRTOS主要API的应用 项目实战 外卖自提柜 4 FreeRTOS 堆栈分配 调试技巧 项
  • 项目实战-外卖自提柜 4. FreeRTOS 堆栈分配、调试技巧

    项目实战 外卖自提柜 1 项目介绍 协议制定 项目实战 外卖自提柜 2 CubeMX 43 FreeRTOS入门 项目实战 外卖自提柜 3 FreeRTOS主要API的应用 项目实战 外卖自提柜 4 FreeRTOS 堆栈分配 调试技巧 项
  • 项目实战-外卖自提柜 5. ESP8266 01S配置与掉线处理

    项目实战 外卖自提柜 1 项目介绍 协议制定 项目实战 外卖自提柜 2 CubeMX 43 FreeRTOS入门 项目实战 外卖自提柜 3 FreeRTOS主要API的应用 项目实战 外卖自提柜 4 FreeRTOS 堆栈分配 调试技巧 项
  • 项目实战-外卖自提柜 6. 硬件工作与测试(原理图、PCB绘制、测试视频)

    项目实战 外卖自提柜 1 项目介绍 协议制定 项目实战 外卖自提柜 2 CubeMX 43 FreeRTOS入门 项目实战 外卖自提柜 3 FreeRTOS主要API的应用 项目实战 外卖自提柜 4 FreeRTOS 堆栈分配 调试技巧 项
  • Anaconda中报CondaSSLError错误的解决方法

    windows10上 xff0c 在使用Anaconda配置instant ngp环境时 xff0c 依次执行如下命令 xff0c 当执行第4条命令安装ffmpeg时 xff0c 报了如下错误 xff1a CondaSSLError Ope
  • 【学习笔记】STM32固件库内部结构及功能简介

    本文为 150集 野火F103霸道 指南者视频教程 入门篇的学习笔记 原视频 xff1a P16 初识STM32固件库 我们认为固件库应该是什么样子的 1 汇编编写的启动文件 startup stm32f10x hd s 设置堆栈指针 设置
  • 香港中文大学计算机系直博面试经验

    2021年7月12日 xff0c 我拿到了香港中文大学的offer xff0c 开个帖子记录一下面试题目 xff0c 方便学弟学妹参考 一 导师面试 2021年5月 xff0c 我通过发邮件联系了导师 xff0c 附上了我的个人简历 xff
  • 基于检测代码库detectron2的蒸馏应用

    基于检测代码库detectron2和蒸馏代码库RepDistiller xff0c 完成将蒸馏方法应用在目标检测的代码库 xff0c 完整代码已开源 1 参数添加 在config defaults py里面添加蒸馏参数的默认值 xff0c
  • Transformer论文解读一(Transformer)

    最近Transformer在CV领域很火 xff0c Transformer是2017年Google发表的Attention Is All You Need xff0c 主要是针对自然语言处理领域提出的 本系列文章介绍Transformer
  • 使用python的turtle库函数画圣诞树详细教程

    今天改bug改到自闭 xff0c 花了一晚上时间最后发现是一个小参数导致的 xff0c 唉 xff01 想到最近画圣诞树不是很火嘛 xff0c 就放松一下 xff0c 出个画圣诞树的教程吧 首先我们的目标是这样子的 xff1a 那么他有什么

随机推荐