【CanMV K230】圆形检测

news2024/12/23 14:44:19

【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, sys

from media.sensor import * #导入sensor模块,使用摄像头相关接口
from media.display import * #导入display模块,使用display相关接口
from media.media import * #导入media模块,使用meida相关接口

try:

    sensor = Sensor(width=1280, height=960) #构建摄像头对象,将摄像头长宽设置为4:3
    sensor.reset() #复位和初始化摄像头
    sensor.set_framesize(width=320, height=240) #设置帧大小,默认通道0
    sensor.set_pixformat(Sensor.RGB565) #设置输出图像格式,默认通道0

    Display.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() #启动sensor

    clock = 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 run
    if isinstance(sensor, Sensor):
        sensor.stop()
    # deinit display
    Display.deinit()
    os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)
    time.sleep_ms(100)
    # release media buffer
    MediaManager.deinit()

在这里插入图片描述

HDMI屏幕使用圆形检测

'''
实验名称:圆形检测测试
实验平台:01Studio CanMV K230
说明:实现图像在HDMI显示器进行圆形检测
测试人:咸鱼浆 2024年9月6日21:02:15
'''

import time, os, sys

from media.sensor import * #导入sensor模块,使用摄像头相关接口
from media.display import * #导入display模块,使用display相关接口
from media.media import * #导入media模块,使用meida相关接口

try:

    sensor = Sensor(width=1280, height=960) #构建摄像头对象,将摄像头长宽设置为4:3
    sensor.reset() #复位和初始化摄像头
    sensor.set_framesize(width=640, height=480) #设置帧大小为(width=640, height=480)太大了就显示不出来了,默认通道0
    sensor.set_pixformat(Sensor.RGB565) #设置输出图像格式,默认通道0

    #使用IDE缓冲区输出图像,显示尺寸和sensor配置一致。
    Display.init(Display.LT9611, to_ide=True)

    MediaManager.init() #初始化media资源管理器

    sensor.run() #启动sensor


    while 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 run
    if isinstance(sensor, Sensor):
        sensor.stop()
    # deinit display
    Display.deinit()
    os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)
    time.sleep_ms(100)
    # release media buffer
    MediaManager.deinit()

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

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

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

相关文章

线性代数|机器学习-P34神经网络和学习函数

文章目录 1. 神经网络2. 损失函数3. 距离矩阵 1. 神经网络 构建一个神经网络步骤如下: 构建一个神经网络 构造一个学习函数 F ( x , v ) F(x,v) F(x,v),x代表权重 A k , b k A_k,b_k Ak​,bk​,v代表样本特征向量,ReLu激活函数 v 1 R e L u [ F ( A …

Leetcode 剑指 Offer II 094.分割回文串 II

题目难度: 困难 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个字符串 s,请将 s 分割成一些子串&#xff0c…

Clean Minimalist GUI Pack (简约风格UI界面)

Unity 最简洁易用的 GUI 资源包。如果你在寻找资源商店上 UI 极简主义革命的发起者,你已经找到了。 这一极干净简约的 GUI 资源包是一款适合移动设备使用的游戏 UI 资源包,其中包含许多图标和元素,可用于创建具有简洁风格的完整游戏 UI。 功能: • 包括 3 种皮肤:深色、浅…

C++编程语言:基础设施:表达式(Bjarne Stroustrup)

第10章 表达式(Expressions) 目录 10.1 引言 10.2 一个桌面计算器程序 10.2.1 解析器(Parser) 10.2.2 输入(Input) 10.2.3 底层输入(Low-Level Input) 10.2.4 错误处理(Error-Handling) 10.2.5 驱动器(Driver) 10.2.6 头文件(Headers) 10.2.7 命令行参数 …

全网最火的AI技术:Rag详解

“Rag”是机器学习中的术语,通常指的是“Ragged Tensors”(不规则张量)。Ragged Tensors 是一种特殊类型的张量,允许不同的维度中的子张量有不同的长度或形状。这在处理诸如文本、序列数据等不定长的数据时特别有用。例如&#xf…

WebShell流量特征检测_哥斯拉篇

90后用菜刀,95后用蚁剑,00后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对后三款经典的webshell管理工具进行流量分析和检测。 什么是一句话木马? 1、定义 顾名思义就是执行恶意指令的木马,通过技术手…

Pytorch环境搭建时的各种问题

1 问题 1.一直soving environment,跳不出去。网络解决方案有:配置清华源,更新conda等,没起作用。2.下载完后,有3个要done的东西,最后那个exe开头的(可能吧),总是报错。网…

C++常见异常汇总(一)

文章目录 1、error: ‘__s_getMD5Sum’ is not a member2、Field has incomplete type2.1 处理方案1:使用前置声明2.1 处理方案2:使用静态变量 3、无法访问基类的public函数 1、error: ‘__s_getMD5Sum’ is not a member 错误现象: error: …

统计学习方法与实战——统计学习方法之感知机

感知机 感知机三要素分析模型策略损失函数选择 算法原始形式对偶形式 相关问题 例子iris数据集分类实战数据集查看 显示结果sklearn 实战感知机 习题解答习题2.1解题步骤反证法 习题2.2习题2.3凸壳线性可分线性可分证明凸壳不相交证明充分性:凸壳不相交\Rightarrow⇒…

轻瑜伽 1.0.2 简约实用的瑜伽练习,随时随地放松身心,完全免费

轻瑜伽是一款完全免费的瑜伽练习软件,支持安卓。界面设计简洁明了,用户可以随时随地进行瑜伽练习。提供平衡性、灵活性、晨练等多种瑜伽课程,每种课程都有详细的动作指导,适合不同水平的用户。支持离线使用,随时随地享…

关于大模型和AIGC的36条笔记和真话

行业到底有多卷? 最新统计,中国已有130多个大模型问世,在网信办备案的算法模型也超过70多家。BAT等互联网巨头悉数下场发布AI大模型,仅2023年就有超60家创业公司拿到融资,产品更是布满了基础层、模型层和应用层。新一…

论文解读 | KDD2024 演化图上的森林矩阵快速计算

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者直播讲解回放! 作者简介 孙浩鑫,复旦大学博士生,主要研究方向为大规模图上快速算法设计。 概述 森林矩阵在网络科学、观点动力学和机器学习相关应用中…

基于深度学习的气象图像分类【mobilenet+VGG16+swin_transfomer+PyQt5界面】

深度学习天气图像分类 文章目录 1 绪论1.1 研究背景1.2 国内外研究现状1.2.1 国内外研究现状1.2.2 国内外研究现状 2 相关理论基础2.1 Tensorflow框架2.2 卷积神经网络2.2.1 神经元与权值共享2.2.2 结构组成2.2.3反向传播算法 2.3 MobileNetV1网络2.4 VGG16网络2.5 Transformer…

tb-nightly库安装报错

使用pip安装(默认清华镜像)tb-nightly库报如下错误: 网上查阅资料,尝试了以下方式: 使用conda安装失败!使用pip install tb-nightly --index-url https://pypi.org/simple安装失败最后,换成阿…

[Linux]:进程(上)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 初识进程 1.1 进程的概念 在计算机世界中,进程是一个关键概念…

机器学习中的聚类艺术:探索数据的隐秘之美

一 什么是聚类 聚类是一种经典的无监督学习方法,无监督学习的目标是通过对无标记训练样本的学习,发掘和揭示数据集本身潜在的结构与规律,即不依赖于训练数据集的类标记信息。聚类则是试图将数据集的样本划分为若干个互不相交的类簇&#xff…

Confluence8.5.14安装

一、Centos8、安装jdk11(略) 二、mysql数据库 1、mysql安装包下载: MySQL :: Download MySQL Community Server 2、安装: https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.37-1.el8.x86_64.rpm-bundle.tar tar -xvf mysql-8.0.37-1.el8.x86_64.rpm-bund…

浏览器剪贴板 API Clipboard API

在 Web 开发领域,Clipboard API 就是一个备受关注的新利器,它为我们提供了在网页中访问和操作剪贴板的能力,极大地丰富了用户交互体验。本文将深入探讨 Clipboard API 的使用方法和潜在应用场景。 一. 什么是 Clipboard API? Cl…

集合及映射

1、集合类图 1)ArrayList与LinkedList 区别 LinkedList 实现了双向队列的接口,对于数据的插入速度较快,只需要修改前后的指向即可;ArrayList对于特定位置插入数据,需要移动特定位置后面的数据,有额外开销 …

Windows 安装mysql 教程,mysql 多版本共存教程,傻瓜式安装教程

mysql 各版本官方下载地址:⬇ ⬇⬇⬇⬇⬇⬇⬇⬇⬇(点击下面链接前往)MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/ 首先我本地安装了 mysql8.0版本了,通过msi 进行安装的也就是傻瓜式…