【CanMV K230】圆形检测

【CanMV K230】圆形检测

  • 什么是圆形检测
  • 圆形检测应用领域
    • 1.工业自动化
    • 2.机器人视觉
    • 3.医学图像分析
    • 4.目标识别
    • 5.质量检测
    • 6.研究和开发
  • K230应用
    • 相关函数
    • 官方例程
    • HDMI屏幕使用圆形检测

请添加图片描述
本篇内容:

  1. 什么是圆形检测
  2. 圆形检测应用领域
  3. K230应用(包含相应函数及例程)

B站视频链接:已做成合集 (求去点赞,或者发个弹幕也行呀。C友)
抖音链接:已做成合集(求去点赞,或者发个弹幕也行呀。C友)

什么是圆形检测

圆形检测是计算机视觉和图像处理中的一个常见任务,主要用于识别图像中的圆形物体

圆形检测应用领域

1.工业自动化

在工业生产中,圆形检测用于识别和定位圆形物体,如轴承、齿轮、管道等。这对于质量控制和自动化装配线至关重要。

在这里插入图片描述

2.机器人视觉

机器人视觉系统中的圆形检测可以帮助机器人识别和处理圆形物体,这对于导航、物体操纵和环境交互等功能非常重要。
在这里插入图片描述

3.医学图像分析

在医学领域,圆形检测用于分析X光、CT或MRI图像中的圆形结构,如肿瘤、囊肿或其他病理变化。
在这里插入图片描述

4.目标识别

圆形检测算法可以用于监控系统中,识别和跟踪圆形目标,如车辆、人脸或其他特定的圆形标记。
在这里插入图片描述

5.质量检测

在制造过程中,圆形检测用于确保产品的尺寸和形状符合标准,这对于提高产品质量和一致性至关重要。
在这里插入图片描述

6.研究和开发

在科学研究和新技术开发中,圆形检测可以作为一种工具来分析实验数据或开发新的检测算法。
在这里插入图片描述

K230应用

相关函数

find_circles对象

构造函数

image.find_circles([roi[, x_stride=2[, y_stride=1[, threshold=2000[, x_margin=10[, y_margin=10[, r_margin=10[, r_min=2[, r_max[, r_step=2]]]]]]]]]])

找圆函数。返回一个image.circle圆形对象,该圆形对象有4个值: x, y(圆心), r (半径)和magnitude(量级);量级越大说明识别到的圆可信度越高。

参数说明
roi识别区域(x,y,w,h),未指定则默认整张图片。
threshold阈值。返回大于或等于threshold的圆,调整识别可信度。
x_stride y_stride霍夫变换时跳过x,y像素的量;
x_margin y_margin r_margin控制所检测圆的合并;
r_min r_max:控制识别圆形的半径范围;
r_step控制识别步骤。

使用方法
直接调用该函数。(大部分参数使用默认即可,不支持压缩图像和bayer图像)

官方例程

'''
实验名称:圆形检测
实验平台:01Studio CanMV K230
教程:wiki.01studio.cc
说明:推荐使用320x240以下分辨率,分辨率过大会导致帧率下降。
'''import time, os, sysfrom media.sensor import * #导入sensor模块,使用摄像头相关接口
from media.display import * #导入display模块,使用display相关接口
from media.media import * #导入media模块,使用meida相关接口try:sensor = Sensor(width=1280, height=960) #构建摄像头对象,将摄像头长宽设置为4:3sensor.reset() #复位和初始化摄像头sensor.set_framesize(width=320, height=240) #设置帧大小,默认通道0sensor.set_pixformat(Sensor.RGB565) #设置输出图像格式,默认通道0Display.init(Display.ST7701, to_ide=True) #同时使用3.5寸mipi屏和IDE缓冲区显示图像,800x480分辨率#Display.init(Display.VIRT, sensor.width(), sensor.height()) #只使用IDE缓冲区显示图像MediaManager.init() #初始化media资源管理器sensor.run() #启动sensorclock = time.clock()while True:os.exitpoint() #检测IDE中断################## 这里编写代码 ##################clock.tick()img = sensor.snapshot() #拍摄一张图片# 圆形类有 4 个参数值: 圆心(x, y), r (半径)和 magnitude(量级);# 量级越大说明识别到的圆可信度越高。# `threshold` 参数控制找到圆的数量,数值的提升会降低识别圆形的总数。# `x_margin`, `y_margin`, and `r_margin`控制检测到接近圆的合并调节.# r_min, r_max, and r_step 用于指定测试圆的半径范围。for c in img.find_circles(threshold = 2000, x_margin = 10, y_margin= 10,r_margin = 10,r_min = 2, r_max = 100, r_step = 2):#画红色圆做指示img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0),thickness=2)print(c) #打印圆形的信息#Display.show_image(img) #显示图片#显示图片,仅用于LCD居中方式显示Display.show_image(img, x=round((800-sensor.width())/2),y=round((480-sensor.height())/2))print(clock.fps()) #打印FPS###################
# IDE中断释放资源代码
###################
except KeyboardInterrupt as e:print("user stop: ", e)
except BaseException as e:print(f"Exception {e}")
finally:# sensor stop runif isinstance(sensor, Sensor):sensor.stop()# deinit displayDisplay.deinit()os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)time.sleep_ms(100)# release media bufferMediaManager.deinit()

在这里插入图片描述

HDMI屏幕使用圆形检测

'''
实验名称:圆形检测测试
实验平台:01Studio CanMV K230
说明:实现图像在HDMI显示器进行圆形检测
测试人:咸鱼浆 2024年9月6日21:02:15
'''import time, os, sysfrom media.sensor import * #导入sensor模块,使用摄像头相关接口
from media.display import * #导入display模块,使用display相关接口
from media.media import * #导入media模块,使用meida相关接口try:sensor = Sensor(width=1280, height=960) #构建摄像头对象,将摄像头长宽设置为4:3sensor.reset() #复位和初始化摄像头sensor.set_framesize(width=640, height=480) #设置帧大小为(width=640, height=480)太大了就显示不出来了,默认通道0sensor.set_pixformat(Sensor.RGB565) #设置输出图像格式,默认通道0#使用IDE缓冲区输出图像,显示尺寸和sensor配置一致。Display.init(Display.LT9611, to_ide=True)MediaManager.init() #初始化media资源管理器sensor.run() #启动sensorwhile True:os.exitpoint() #检测IDE中断################## 这里编写代码 ##################img = sensor.snapshot() #拍摄一张图# 圆形类有 4 个参数值: 圆心(x, y), r (半径)和 magnitude(量级);# 量级越大说明识别到的圆可信度越高。# `threshold` 参数控制找到圆的数量,数值的提升会降低识别圆形的总数。# `x_margin`, `y_margin`, and `r_margin`控制检测到接近圆的合并调节.# r_min, r_max, and r_step 用于指定测试圆的半径范围。for c in img.find_circles(threshold = 3000, x_margin = 10, y_margin= 10,r_margin = 10,r_min = 2, r_max = 100, r_step = 2):#画红色圆做指示img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0),thickness=2)print(c) #打印圆形的信息Display.show_image(img, x=round((1920-sensor.width())/2),y=round((1080-sensor.height())/2))#Display.show_image(img) #显示图片###################
# IDE中断释放资源代码
###################
except KeyboardInterrupt as e:print("user stop: ", e)
except BaseException as e:print(f"Exception {e}")
finally:# sensor stop runif isinstance(sensor, Sensor):sensor.stop()# deinit displayDisplay.deinit()os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)time.sleep_ms(100)# release media bufferMediaManager.deinit()

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1527444.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

SAP学习笔记 - 开发03 - CDSView开发环境搭建,Eclipse中连接SAP,CDSView创建

上一章讲了BTP的账号创建,环境搭建等内容。 SAP学习笔记 - 开发02 - BTP实操流程(账号注册,BTP控制台,BTP集成开发环境搭建)-CSDN博客 本章继续讲SAP开发。 - CDSView 的开发环境(Eclipse)搭建…

C++初阶:STL详解(一)——string类

✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C:由浅入深篇 小新的主页:编程版小新-CSDN博客 1.为什么会有string类 C 语言中&#xff0c…

驾驭不断发展的人工智能世界

从很多方面来看,历史似乎正在重演。许多企业正争相采用生成式人工智能 (Gen AI),就像它们争相采用云计算一样,原因也是一样的:效率、成本节约和竞争优势。 然而,与云一样,GenAI 仍是一项发展中的技术&…

Kafka 分布式消息系统详细介绍

Kafka 分布式消息系统 一、Kafka 概述1.1 Kafka 定义1.2 Kafka 设计目标1.3 Kafka 特点 二、Kafka 架构设计2.1 基本架构2.2 Topic 和 Partition2.3 消费者和消费者组2.4 Replica 副本 三、Kafka 分布式集群搭建3.1 下载解压3.1.1 上传解压 3.2 修改 Kafka 配置文件3.2.1 修改z…

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接) 4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答…

gazebo 已加载模型但无法显示

目录 写在前面的话问题一:robot_state_publisher 发布机器人信息失败报错一 Error: Error document empty.报错二 .xcaro 文件中有多行注释成功启动 问题二:通过 ros2 启动 gazebo 失败成功启动 问题三:gazebo 崩溃和无法显示模型问题四&…

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes…

Pr:首选项 - 音频

Pr菜单:编辑/首选项 Edit/Preferences Premiere Pro 首选项中的“音频” Audio选项卡主要作用是控制音频的处理设置,包括音量调整、波形生成、音频渲染等选项,这些设置有助于优化音频的处理和编辑工作,适用于不同的剪辑需求和项目…

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置: // launch.json {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.…

RISC-V (十二)系统调用

系统模式:用户态和内核态 当前的代码都是实现在machine模式下。 系统模式的切换 epc寄存器的值存放的是ecall指本身的地址 。 用ecall指令 系统调用的执行流程 mret这条指令会利用status的mpp值恢复到之前的特权级别。 蓝色的线表示涉及到权限切换。 系统调用的传…

想要从OPPO手机恢复数据?免费OPPO照片视频恢复软件

此实用程序可帮助那些寻找以下内容的用户: 在OPPO手机中格式化存储卡后可以恢复图片吗?我删除了 OPPO上的视频和图片,我感觉很糟糕,因为里面有我在拉斯维加斯拍摄的视频和照片 免费OPPO照片视频恢复软件 您能恢复OPPO上已删除的…

JavaScript拷贝的艺术:玩转深拷贝和浅拷贝

前言 在实际的项目开发中,我们时刻都在使用数据拷贝功能,赋值、深拷贝和浅拷贝是前端开发中常见的概念,用于复制简单数据类型(字符串、数值、布尔值)和引用类型(对象、数组)。它们的主要区别在…

spring中添加@Test注解测试

1、添加maven依赖 <!-- 添加test方便测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><grou…

C语言进阶版第8课—指针(2)

文章目录 1. 数组名的理解2. 指针访问数组3. 一维数组传参本质4. 冒泡排序5. 二级指针6. 指针数组7. 指针数组模拟二维数组 1. 数组名的理解 sizeof&#xff08;数组名&#xff09;— 这里的数组名代表整个数组&#xff0c;计算的也是整个数组的大小&数组名 — 这里的数组名…

HTML 基础,尚优选网站设计开发(二)

最近在恶补HTML相关知识点&#xff0c;本人是后端程序员&#xff0c;看到周围很多人都被裁员了&#xff0c;突然想尽早转变成全栈程序员变成独立开发者&#xff0c;有空余接接私单、商单的 尚优选网站设计开发&#xff0c;HTMLCSSJavaScript实际使用 尚优选网站设计开发页面分析…

KDD 2024 时空数据(Spatio-temporal) Research论文总结

2024 KDD&#xff08; ACM SIGKDD Conference on Knowledge Discovery and Data Mining, 知识发现和数据挖掘会议&#xff09;在2024年8月25日-29日在西班牙巴塞罗那举行。 本文总结了KDD2024有关时空数据(Spatial-temporal) 的相关论文&#xff0c;如有疏漏&#xff0c;欢迎大…

初步了解VTK装配体

VTK还不太了解&#xff0c;根据资料&#xff0c; vtk.vtkAssembly 是 VTK库中的一个重要类&#xff0c;允许通过将多个vtkActor对象组合在一起来创建复杂的3D模型。 import vtk import math from vtk.util.colors import *filenames ["cylinder.stl","sphere…

打破AI壁垒-降低AI入门门槛

AI和AGI AI&#xff08;人工智能-Artificial Intelligence&#xff09;&#xff1a; 先说说AI&#xff0c;这个大家可能都不陌生。AI&#xff0c;就是人工智能&#xff0c;它涵盖了各种技术和领域&#xff0c;目的是让计算机模仿、延伸甚至超越人类智能。想象一下&#xff0c;…

苍穹外卖学习笔记(一)

文章目录 开发环境搭建一. 前端环境搭建二. 后端环境搭建1.进入idea项目2.提交git仓库(推送github远程仓库)3.数据库环境搭建4.前后端联调(在源代码中项目已经实现登录功能)nginx反向代理好处: 三. 完善登录功能(md5加密存储)1.首先打开pojo模块中实体类的employee&#xff0c;…

Linux网络测试和故障排查命令

文章目录 ping 命令常用选项&#xff1a;使用示例&#xff1a;域名解析和 IP 地址响应数据停止 ping 命令统计数据延迟统计 traceroute 命令常用选项&#xff1a;使用示例&#xff1a;命令执行&#xff1a;路由节点详情&#xff1a; mtr 命令使用示例&#xff1a;使用结果详解输…