按尺寸筛选轮廓图中的轮廓

1.按短边筛选

 原始轮廓图:

import cv2
import numpy as np# 读取轮廓图
contour_image = cv2.imread('..\\IMGS\\pp_edge.png', cv2.IMREAD_GRAYSCALE)# 使用cv2.findContours()函数获取所有轮廓
contours, _ = cv2.findContours(contour_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 设定的直径阈值
threshold_diameter = 25.0# 遍历每个轮廓
new_image = np.zeros_like(contour_image)
for contour in contours:rect = cv2.minAreaRect(contour)  # 获取最小外接矩形diameter = rect[1][0] if rect[1][0] <= rect[1][1] else rect[1][1]    # 计算轮廓的最短尺寸,并获取直径# 如果轮廓的直径小于设定的阈值,则忽略该轮廓if diameter >= threshold_diameter:cv2.drawContours(new_image, [contour], -1, (255, 255, 255))print(diameter, end=', ')cv2.imshow('Filtered Contours', new_image)   # 绘制保留的轮廓
cv2.waitKey(0)
cv2.destroyAllWindows()

 输出结果以及与原图对比:

                                     

2.按长边筛选

 

import cv2
import numpy as np# 读取轮廓图
contour_image = cv2.imread('..\\IMGS\\pp_edge2.png', cv2.IMREAD_GRAYSCALE)# 使用cv2.findContours()函数获取所有轮廓
contours, _ = cv2.findContours(contour_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 设定的直径阈值
threshold_diameter = 25.0# 遍历每个轮廓
new_image = np.zeros_like(contour_image)
for contour in contours:diameter = cv2.minEnclosingCircle(contour)[1] * 2   # cv2.minEnclosingCircle():计算一个轮廓的最小包围圆,返回值是圆心坐标和半径# 如果轮廓的直径小于设定的阈值,则忽略该轮廓if diameter >= threshold_diameter:cv2.drawContours(new_image, [contour], -1, (255, 255, 255))print(diameter, end=', ')cv2.imshow('Filtered Contours', new_image)   # 绘制保留的轮廓
cv2.waitKey(0)
cv2.destroyAllWindows()

结果图:

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

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

相关文章

网络故障排除-无线信号干扰问题

WLAN网络通过无线信号(高频电磁波)传输数据&#xff0c;随传输距离的增加无线信号强度会越来越弱&#xff0c;且相邻的无线信号之间会存在重叠干扰的问题都会降低无线网络信号质量甚至导致无线网络无法使用。通常针对如下常见问题进行设计优化。 一、信号强度弱。 如果设计无线…

学习Uni-app开发小程序Day17

今天开始&#xff0c;就把uni-app前期使用的全部学完了&#xff0c;现在就把以前学习的&#xff0c;做成一案例&#xff0c;中间有未讲的&#xff0c;在进行补充&#xff0c;这里是根据老师视频进行项目案例编写的。 先弄出效果图&#xff0c;然后在根据效果图进行代码的编辑 …

uni-app 微信 支付宝 小程序 使用 longpress 实现长按删除功能,非常简单 只需两步

1、先看效果 2、直接上代码 ui结构 <view class"bind" longpress"deleteImage" :data-index"index"><view class"bind_left">绑定设备</view><view class"bind_right"><view class"bind_t…

Raven2掠夺者2渡鸦2角色创建、游戏预下载、账号怎么注册教程

《渡鸦2》&#xff08;Raven 2&#xff09;是由韩国开发的一款大型多人在线角色扮演游戏&#xff08;MMORPG&#xff09;类型的手游&#xff0c;作为前作《Raven》的续集&#xff0c;继承并发展了其黑暗奇幻世界观&#xff0c;同时在游戏设计和内容上进行了大量创新。游戏预计于…

创新系列-既要保留<a/>标签右键功能, 又不要href导致点击页面刷新, 希望click实现vue-router跳转

发布时间&#xff1a;2024/05/22 如果您有适合我的项目机会给到我&#xff0c;这是我的简历&#xff1a;Resume 思路&#xff1a; 思路原理&#xff1a;实践发现href为null或者" "的时候是不起作用的 将href属性绑定的固定路径设置为响应式数据变量a&#xff0c;a初…

Folding Strip 题解

题目大意 给你一个只有 0 0 0 和 1 1 1 的字符串&#xff0c;不断地进行翻折&#xff08;前提是翻折后翻折所对应的格子里的字符相同&#xff09;&#xff0c;使得最后字符串的长度最小。 分析 很明显地发现&#xff0c;翻折时一定在某两个相邻且字符相等的格子之间为断点…

Spring:IoC容器(基于注解管理bean)

1. HelloWorld * 引入依赖* 开启组件扫描* 使用注解定义 Bean* 依赖注入 2.开启组件扫描 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/20…

阿里云OSS文件上传和下载完整指南

目录 前言 一、前期准备 二、文件上传 上传进度条 三、文件下载 1.流式下载 2.下载到本地 3.进度条 前言 文件上传是常见需求&#xff0c;一般我们不会把文件直接上传到应用服务器&#xff0c;因为单台服务器存储空间是有限的&#xff0c;不好扩展。阿里云对象存储&…

YoloV9改进策略:卷积篇|使用PConv替换YoloV8中的卷积|即插即用,简单高效

摘要 本文提出一种简单而高效的改进方法,通过使用部分卷积(PConv)替代YoloV9中的普通卷积,实现模型性能的提升。在本文中,我们详细阐述了使用PConv改进YoloV9的具体方法,并通过大量实验验证了其有效性。实验结果表明,相较于原始YoloV9模型,采用PConv改进后的模型在数据…

Diffusion Model 和 Stable Diffusion 详解

文章目录 Diffusion Model 基础生成模型DDPM概述向前扩散过程前向扩散的逐步过程前向扩散的整体过程 反向去噪过程网络结构训练和推理过程训练过程推理过程优化目标 详细数学推导数学基础向前扩散过程反向去噪过程 Stable Diffusion组成结构运行流程网络结构VAE 模型文本编码器…

MyBatis的基础操作

目录 一.什么是MyBatis? 二.使用MyBatis的准备工作 1.引入依赖: 2.配置数据库连接字符串(建立MaBatis和MySQL的连接) 3.在model包中建立数据库对应的实体类UserInfo 三.通过注解的方式实现MyBatis的开发 1.插入语句(Insert) 2.删除语句(Delete) 3.更新语句(Update) 4…

地理信息科学专业认知与介绍

地理信息科学的背景意义在于它提供了一种解决各种空间问题的方法。随着全球化和数字化的发展&#xff0c;地理信息科学正在成为一个越来越重要的领域。它被广泛应用于城市规划、土地利用、环境保护、资源管理、农业、林业、水利、地震等领域。 专业特色 地理空间信息处理&…

突破乙肝治疗瓶颈新希望!恒瑞医药小核酸疗法领跑进入II期临床试验

近日&#xff0c;恒瑞医药的针对慢性乙型肝炎的小核酸疗法要准备开启一项多中心、随机、开放、平行设计的 II 期研究,旨在评估 HRS-5635 注射液单独或与其他药物联合治疗慢性乙型肝炎患者的疗效和安全性二期临床实验。去年开启的1期&#xff0c;今年就要准备2期实验了。 咱们国…

Java核心: Stream流的实现原理

Java 8之后我们对Stream的使用都已经习以为常了&#xff0c;它帮助我们从怎么做的细节里脱身&#xff0c;只要告诉它做什么即可。这一篇文章我们主要讲Java Stream的实现原理&#xff0c;手写一个Stream框架&#xff0c;然后再来讲解Java Stream的核心类&#xff0c;做到知其然…

vue-3d-loader 加载多个模型

需求 1、在使用three.js进行开发的过程中&#xff0c;需要列表加载多个模型&#xff0c;并根据需要多模型进行加载。 2、当鼠标移动到图片上去的时候&#xff0c;开始加载模型&#xff0c; 模型进行加载和展示。 3、在制作3d沉浸式商城时&#xff0c;需要根据需求&#xff0…

字典推导式

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 使用字典推导式可以快速生成一个字典&#xff0c;它的表现形式和列表推导式类似。例如&#xff0c;我们可以使用下面的代码生成一个包含4个随机数的字…

net.ipv4.icmp_echo_ignore_broadcasts 内核参数 ping请求超时

net.ipv4.icmp_echo_ignore_broadcasts 是 Linux 内核参数之一&#xff0c;用于控制系统是否响应发送到广播地址的 ICMP 回显请求&#xff08;ping&#xff09;。具体来说&#xff0c;当该参数的值为 1 时&#xff0c;系统将忽略发送到广播地址的 ICMP 回显请求&#xff0c;不会…

shell编程之面交互

Here Document Here Document使用注意事项 面交互 面交互修改账号密码 [rootlocalhost opt]# passwd zhangsan <<EOF > abc1234 #下面两行是输入密码 > abc1234 > EOF 更改用户 zhangsan 的密码 。 新的 密码&#xff1a;无效的密码&#xff1a;…

业务知识(Business Knowledge 业务分析能力)

背景 业务分析的胜任力模型&#xff0c;有六大部分&#xff0c;今天我们看第二部分&#xff0c;业务知识 Analytical Thinking and Problem Solving &#xff1a;分析判断及问题解决能力Behavioural Characteristics&#xff1a; 行为特质&#xff08;责任、道德、适应性等等…

贝叶斯:共轭先验(conjugacy)

共轭先验与共轭分布 在贝叶斯统计中&#xff0c;如果后验分布与先验分布属于同类&#xff0c;则先验分布与后验分布被称为共轭分布&#xff0c;而先验分布被称为似然函数的共轭先验。&#xff08;要求后验分布与先验分布是同类分布&#xff0c;不要求似然函数分布相同。&#…