按面积筛选填充二值图中的孔洞-python源码

目录

🙋🙋需求

🍅🍅解决方案


 

🙋🙋需求

        前提条件是二值图中0是背景,255是前景

        二值化后的影像中有很多小孔洞,现在需要按孔洞面积进行筛选填充面积小于阈值的孔洞,面积太大的孔洞不需要填充

        输入图如下,需要填充椭圆形五角星矩形三角形面积较大不填充:

🍅🍅解决方案

        下面是一个Python源代码实现,用于按照面积筛选填充二值图中的孔洞的功能:

import cv2
import numpy as npdef fill_holes(image, min_area):# 二值化图像_, binary = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)binary = 255 - binary # 寻找轮廓contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 填充孔洞for contour in contours:area = cv2.contourArea(contour)if area < min_area:cv2.drawContours(image, [contour], -1, 0, -1)return image# 读取图像
image = cv2.imread('image.png', 0)# 按照面积筛选并填充孔洞
filled_image = fill_holes(image, min_area=1000)# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Filled Image', filled_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

        首先,我们使用cv2.threshold函数对输入图像进行二值化。然后,为了计算前景的面积,需要对前景和背景进行反转,然后使用cv2.findContours函数找到图像中的轮廓。接下来,我们遍历每一个轮廓,计算其面积并与指定的最小面积进行比较。如果面积小于最小面积,则使用cv2.drawContours函数将该轮廓填充为黑色。最后,返回填充后的图像。

        请注意,输入图像应为单波段二值图像或单波段灰度图,并且孔洞应为白色(值为255)。还有面积阈值可以自由调整,在使用以上代码之前,请确保安装了OpenCV库。

        输出后的图像为:

        持续更新python代码实用小工具,喜欢就一键三连吧~~~

 

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

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

相关文章

web学习笔记(四十一)

目录 1.生成器Generator 2.解决回调地狱的三种方法 3. Promise对象 3.1什么是Promise对象 3.2Promise对象解决异步地狱问题 3.3Promise对象的三种状态和两个过程 3.4Promise的then方法 1.生成器Generator 生成器主要用来解决异步操作的问题。是一个异步编程的解决方案&a…

EasyExcel 导出动态表格

EasyExcel 导出动态表格 一般推荐使用方法二&#xff0c;但方法一也一定要看&#xff0c;会有很多收获。 需求 &#xff1a;前端选择对应列&#xff0c;导出对应列的数据&#xff0c;比如前端选择了 姓名、名称、学号列 那么就需要导出如下表格&#xff1a; ok&#xff0c;需…

面试题 之 react

1.说说对react的理解 1️⃣是什么 React是用于构建用户界面的 JavaScript 库,遵循组件设计模式、声明式编程范式和函数式编程概念&#xff0c;更高效使用虚拟 DOM 来有效地操作 DOM &#xff0c;遵循从高阶组件到低阶组件的单向数据流。 react 类组件使用一个名为 render() 的方…

爬虫高阶(一):解决验证码及爬取知网论文数据

爬取知网论文数据 解决验证码实现过程代码解决验证码 首先我们必须要识别出验证码,才能让进行下一步。 分享一个好用的网站 云码 接着按照流程操作来得到积分,点击个人中心查看自己的token即可(会用到,一次大约10积分,初始有300免费积分,1元能有1000积分) 实现过程…

[AIGC] MySQL与PostgreSQL事务完整性的对比

事务完整性是数据库管理系统最为重要的特性之一。在简单的术语中&#xff0c;一个事务可以被定义为一个逻辑单元的工作&#xff0c;它一旦被提交&#xff0c;要么全部成功&#xff0c;要么全部失败。这种“全部或无”的特性体现了一个数据库事务的原子性&#xff0c;是保证数据…

elementUI组件库样式修改整理

一、整体修改样式注意点 避免!important&#xff0c;能使用深度选择器就用深度选择器主题色使用变量&#xff0c;方便后期统一修改&#xff0c;最好新建一个单独的文件&#xff0c;专门用于定义公共变量样式文件尽量放在一个文件里&#xff0c;方便后期维护 二、单独element …

Css提高——Css3盒子模型border-box

1、盒子模型的种类与区别 CSS3 中可以通过 box-sizing 来指定盒模型&#xff0c;有2个值&#xff1a;即可指定为 content-box、border-box&#xff0c;这样我们 计算盒子大小的方式就发生了改变。 CSS3 盒子模型 可以分成两种情况&#xff1a; 1. box-sizing: content-box 盒…

安卓面试题多线程 111-115

111. 简述在 Java 中 Executor 和 Executors 的区别 ?Executors 工具类的不同方法按照我们的需求创建了不同的线程池,来满足业务的需求。 Executor 接口对象能执行我们的线程任务。 ExecutorService 接口继承了 Executor 接口并进行了扩展,提供了更多的方法我们能获得任务执…

ArcGIS Pro与R:携手优化生态系统服务评估流程

生态系统服务是指生态系统所形成的用于维持人类赖以生存和发展的自然环境条件与效用&#xff0c;是人类直接或间接从生态系统中得到的各种惠益。联合国千年生态系统评估&#xff08;Millennium ecosystem assessment&#xff0c;MA&#xff09;提出生态系统服务包括供给、调节、…

深度学习基础之《TensorFlow框架(9)—案例:实现线性回归》

一、线性回归原理复习 1、什么是线性回归 &#xff08;1&#xff09;有个假设函数&#xff0c;假定特征值和目标值满足这样的关系 w1x1 w2x2 ... wnxn b y &#xff08;2&#xff09;构造损失函数 均方误差、最小二乘法 &#xff08;3&#xff09;优化损失 正规方程和梯度…

electron-builder打包

打包配置&#xff1a; "build": {"appId": "cc11001100.electron.example-001", // 程序包名"copyright": "CC11001100", // 版权相关信息"productName": "example-001", // 安装包文件名"direct…

easyExcel 读取excel(按条读取)

MAVEN <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version></dependency>代码 import com.al…

Python 解析CSV文件 使用Matplotlib绘图

数据存储在CSV文件中&#xff0c;使用Matplotlib实现数据可视化。 CSV文件&#xff1a;comma-separated values&#xff0c;是在文件中存储一系列以‘&#xff0c;’分隔的值。 例如&#xff1a;"0.0","2016-01-03","1","3","20…

电子电工基础-二极管

二极管&#xff1a;单向导电性 工作区域&#xff1a;截止区、放大区、饱和区、反向击穿区 相关计算题 注意点&#xff1a;正向压降为0.7V&#xff0c;但是电流小&#xff0c;可以设为0.6V 在对其进行静态分析 可以得出静态直流的电流大小Id 根据二极管电流为26ma的特性&…

力扣刷题Days23-35.搜索插入的位置(js)

1&#xff0c;题目 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。 2&#xff0c;代码 /*** param {number[]} nums*…

Vue+SpringBoot打造智慧家政系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服务4.2 新增单条服务订单4.3 新增留言反馈4.4 小程序登录4.5 小程序数据展示 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的智慧家政系统&#xff0…

鸿蒙 Launcher与android Launcher的开发区别

鸿蒙&#xff08;HarmonyOS&#xff09;Launcher与Android Launcher在某些方面相似&#xff0c;但也存在一些明显的区别。尽管鸿蒙Launcher和Android Launcher都是用于用户与设备交互的界面&#xff0c;但由于底层架构、生态系统、开发语言和工具等方面的差异&#xff0c;它们在…

2024年亚洲图像处理趋势会议(ATIP 2024)即将召开!

2024年亚洲图像处理趋势会议&#xff08;简称&#xff1a;ATIP 2024&#xff09;将于2024年6月21日至23日在英国伦敦举行。在会议上我们将与相关领域的研究人员和知名专业人士共同讨论关于图像处理学科的最新研究方向及进展&#xff0c;评估当前最先进的技术和未来研究的关键领…

使用el-cascader组件写下拉级联多选并且具有全选功能

样式 说明&#xff1a; 级联选择器中加上全选的按钮&#xff0c; 并且保证数据响应式。 思路 因为是有全选的功能&#xff0c;所以不能直接使用el-cascader组件&#xff0c; 而是选择使用el-select组件&#xff0c; 在此组件内部使用el-cascader-panel级联面板全选按钮也是…

Win11配置WSL(Ubuntu)环境

一&#xff0c;什么是WSL WSL:Windows Subsystem for Linux&#xff0c;是用于Windows系统之上的Linux子系统。作用很简单&#xff0c;可以在Windows系统中获得Linux系统环境&#xff0c;并完全直连计算机硬件&#xff0c;无需通过虚拟机虚拟硬件 简而言之: Windows10的WSL功能…