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

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

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.lryc.cn/news/355133.html

相关文章:

  • VBA高级应用30例:实现在列表框内及列表框间实现数据拖动
  • 「AIGC算法」R-tree算法
  • 2024软考上半年嵌入式系统设计师考试回顾
  • MIT6.828 Lab2-1 Using gdb
  • mysqldump提示Using a password on the command line interface can be insecured的解决办法
  • Java毕业设计 基于springboot vue考勤管理系统
  • C数据结构:二叉树
  • 使用Nginx作为反向代理实现MQTT内外网通信
  • SpringBoot 上传文件示例
  • 9.js函数
  • 关于数据库和数据表的基础SQL
  • 【C语言深度解剖】(14):结构体内存对齐(详细配图讲解)
  • 学习笔记:C语言的32个关键字
  • 嵌入式学习 (Day:27 IPC --- 进程间通信)
  • Python考试复习--day2
  • 整理好了!2024年最常见 20 道 Redis面试题(九)
  • IDEA使用Maven打包项目的所有的依赖
  • 【C++ 】学习问题及补充
  • 内存泄漏案例分享3-view的内存泄漏
  • 红外超声波雷达测距
  • AIGC 008-IP-Adapter文本兼容图像提示适配器用于文本到图像扩散模型
  • Java入门基础学习笔记50——ATM系统
  • # linux 中使用 visudo 命令,怎么保存退出?
  • springboot项目,@Test写法 @Before @After
  • vue3的核心API功能:computed()API使用
  • Bootstrap5
  • 宝塔部署纯Vue项目,无后端
  • spring boot3整合邮件服务实现邮件发送功能
  • 算法刷题day54:搜索(一)
  • 深入了解Redis的过期策略和内存淘汰机制