当前位置: 首页 > news >正文

球形识别

利用OpenMV和STM32完成球类识别

单片机部分

功能简述:

  • PA1脚接收OpenMV,若检测到高电平(检测到球形物体),则点亮单片机开发板上的LED

流程图

img

由于代码主要涉及中断函数,主函数部分就一笔带过了

硬件初始化

时钟

  • 初始化RCC,开启外部高速晶振
    img
  • 按照如下方式配置时钟树
    img

配置GPIO及NVIC

  • 将PA1脚改为外部中断任意边沿触发模式,悬空态输入模式
    img
  • 使能1线外部中断
    img

由于该项目只需要使用一个中断,所以不需要考虑优先级问题

代码部分

  • 在1线外部中断写入以下内容
  /* USER CODE BEGIN EXTI1_IRQn 0 *///判断PA1处电平状态,若为高电平则点亮LED(LD2)if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)){HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);}else{HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);}/* USER CODE END EXTI1_IRQn 0 */

OpenMV部分

流程图

img

代码部分

"""
OpenMV圆形识别 - 快速版
功能:检测圆形,P1输出高电平
特点:运行速度快,适合实时控制
"""import sensor
import image
import time
from machine import Pin# 初始化
sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)  # 灰度图
sensor.set_framesize(sensor.QVGA)       # 320x240
sensor.skip_frames(time=1000)# GPIO
output_pin = Pin('P1', Pin.OUT_PP)
output_pin.low()# 检测参数
MIN_RADIUS = 15
MAX_RADIUS = 80
THRESHOLD = 1500print("快速圆形检测启动...")
print(f"检测半径: {MIN_RADIUS}-{MAX_RADIUS}像素")# 主循环
detection_count = 0
last_print_time = time.ticks_ms()while True:# 捕获图像img = sensor.snapshot()# 检测圆形circles = img.find_circles(threshold=THRESHOLD,r_min=MIN_RADIUS,r_max=MAX_RADIUS)# 控制P1引脚if circles:output_pin.high()detection_count += 1else:output_pin.low()# 定期输出统计信息current_time = time.ticks_ms()if current_time - last_print_time > 2000:  # 每2秒打印一次print(f"检测次数: {detection_count}")last_print_time = current_timetime.sleep_ms(20)  # 控制帧率

实验效果

  • 当未检测到球形物体,单片机的LED灯不点亮
    img
  • 当有球体/圆形物品进入摄像头视角即点亮单片机LED
    img
    img
http://www.jsqmd.com/news/486463/

相关文章:

  • 2026陕西房车/露营车产业标杆企业深度解析——合正汽车双主体协同构筑全产业链核心竞争力 - 深度智识库
  • BotHub 聚合AI大模型客户端分享(41.0.23重构版) AI客户端、AI聚合工具、GPT客户端、Claude客户端、Gemini客户端、AI多模型工具、BotHub下载、BotHub最新版
  • 快速温变试验箱全方位解析:从原理到选型的实用指南 - 品牌推荐大师
  • 智能按摩椅:AI Agent的个性化按摩方案
  • 2000-2025年区县级数字治理DID
  • 掌控进程:深入剖析 Linux 内核调度机制
  • 太阳能板清洁机器人3D图纸 STEP格式
  • 一劳永逸!Linux基础命令和工具详解,让你轻松应对各种任务!
  • Win10下安装 Redis
  • SourceTree 交互式变基(rebase) 合并压缩提交
  • 嵌入式知识篇---IMU(惯性测量单元)
  • Docker网络高级实战:隔离网络、检查路由表和自定义网络驱动
  • Python-flask安卓微信小程序农产品商城农贸市场信息管理与个性化菜谱推送系统vue
  • 2025年爬取上市公司高管、董事和监事简历、持股情况、任职情况变动数据(历年)
  • 董宝珍《精神经济学》PDF下载与阅读笔记分享 精神经济学PDF、精神经济学电子书、精神经济学下载、董宝珍精神经济学、精神价值理论
  • BeatBanker木马的复合攻击机制与移动安全防御研究
  • 密码学中的 GPU 加速 AES 算法探索
  • 上位机知识篇---显示框卡顿原因分析与分辨率优化方案
  • Linux 内核内存管理:虚拟地址空间、伙伴系统和块分配器
  • 进阶8 翻译47 单词40
  • 分析常见占用空间的文件类型:系统临时文件
  • 高校场景下税务钓鱼攻击的演化机制与多维防御策略研究
  • 数字孪生如何助力智慧工厂建设?
  • LeetCode 108. 将有序数组转换为二叉搜索树:解题思路+代码详解
  • 本地搜索(@vuepress/plugin-slimsearch替换vuepress-plugin-search-pro)
  • 汽车控制器之软件质量管理体系
  • 2026.3.15:bochs2.6.11(带debug)虚拟机安装和使用教程
  • Java 面试题大全(整理版)附答案详解
  • SpringBoot+Vue Spring boot社区医院管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 2026年食用植物调和油厂家推荐:河南省淇花食用油有限公司,多品类全系供应满足多元需求 - 品牌推荐官