opencv-图像轮廓
轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。
• 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测。
• 查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中。
• 在 OpenCV 中,查找轮廓就像在黑色背景中超白色物体。你应该记住,要找的物体应该是白色而背景应该是黑色。
让我们看看如何在一个二值图像中查找轮廓:
cv2.findContours() 是 OpenCV 中用于查找图像中轮廓的函数。该函数的基本语法如下:
contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
参数说明:
image: 输入图像,通常为二值图像(例如阈值化后的图像)。mode: 轮廓检索模式,有如下几种选择:cv2.RETR_EXTERNAL: 只检测最外层的轮廓。cv2.RETR_LIST: 检测所有轮廓,不建立轮廓层次。cv2.RETR_CCOMP: 检测所有轮廓,建立两层轮廓层次。cv2.RETR_TREE: 检测所有轮廓,建立完整的轮廓层次。
method: 轮廓逼近方法,有如下几种选择:cv2.CHAIN_APPROX_NONE: 存储所有的轮廓点。cv2.CHAIN_APPROX_SIMPLE: 压缩水平、垂直和斜率方向的元素,只保留其端点。cv2.CHAIN_APPROX_TC89_L1和cv2.CHAIN_APPROX_TC89_KCOS: 应用 Teh-Chin 链逼近算法。
contours: 输出参数,存储检测到的轮廓。hierarchy: 输出参数,存储轮廓的层次信息。offset: 可选参数,偏移值,通常不需要使用。
import cv2
# 读取图像
img = cv2.imread( r"C:\Users\mzd\Desktop\opencv\images.jpg")
# 将图像转换为灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 使用阈值处理图像
ret, thresh = cv2.threshold(gray, 127, 255, 0)# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 在原始图像上绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)# 显示原始图像和带有轮廓的图像
cv2.imshow('Original Image', img)
cv2.imshow('Contour Image', thresh)# 等待用户按下任意键
cv2.waitKey(0)
cv2.destroyAllWindows()

这个示例演示了如何使用 cv2.findContours() 函数查找图像中的轮廓,并使用 cv2.drawContours() 函数在原始图像上绘制这些轮廓。
相关文章:
opencv-图像轮廓
轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 • 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检…...
小黑子—Maven高级
Maven高级篇 二 小黑子的Maven高级篇学习1. 分模块开发1.1 分模块开发设计1.2 分模块开发实现1.2.1 抽取domain层1.2.2 抽取dao层 2. 依赖管理2.1 依赖传递2.2 可选依赖2.3 排除依赖 3. 继承与聚合3.1 聚合3.2 继承3.3 总结 4. 属性4.1 配置文件加载属性4.2 版本管理 5. 多环境…...
一个正整数转为2进制和8进制,1的个数相同的第23个数是什么?
package cn.com;import java.lang.*;//默认加载public class C2 {//10进制转8进制static int HtoO(int n){int cnt 0;while(n!0){cntn%8;n/8;}return cnt;}//10进制转2进制static int HtoB(int n){int cnt 0;while(n!0){cntn%2;n/2;}return cnt;}public static void main(Str…...
Unity阻止射线穿透UI的方法之一
if(UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject()) return; 作者:StormerZ https://www.bilibili.com/read/cv27797873/ 出处:bilibili...
HarmonyOS开发:ArkTs常见数据类型
前言 无论是Android还是iOS开发,都提供了多种数据类型用于常见的业务开发,但在ArkTs中,数据类型就大有不同,比如int,float,double,long统一就是number类型,当然了也不存在char类型&…...
Unsupervised MVS论文笔记
Unsupervised MVS论文笔记 摘要1 引言2 相关工作3 实现方法3.1 网络架构3.2 通过光度一致性学习3.3 MVS的鲁棒光度一致性3.4 学习设置和实施的细节3.5.预测每幅图像的深度图 4 实验4.1 在DTU上的结果4.2 消融实验 Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Chr…...
Matplotlib图形注释_Python数据分析与可视化
Matplotlib图形注释 添加注释文字、坐标变换 有的时候单单使用图形无法完整清晰的表达我们的信息,我们还需要进行文字进行注释,所以matplotlib提供了文字、箭头等注释可以突出图形中重点信息。 添加注释 为了使我们的可视化图形让人更加容易理解&#…...
如何把A3 pdf 文章打印成A4
1. 用Adobe Acrobat 打开pdf 2 打印 选择海报 进行调整即可如下图,见下面红色的部分。...
【Vue】vue指令
目录 V-html v-show和v-if v-show 显示 隐藏 v-if 显示 隐藏 总结 显示隐藏的应用场景 未登录的情况 登录的情况 v- else 和 v-else-if v-if 和v-else v-if 和 v-else-if 总结: v-on 语法一: 语法二: 调用传参 v-bind…...
记录华为云服务器(Linux 可视化 宝塔面板)-- 安全组篇
文章目录 前言安全组说明安全组的特性安全组的应用场景 进入安全组添加基本规则添加自定义规则如有启发,可点赞收藏哟~ 前言 和windows防火墙类似,安全组是一种虚拟防火墙,具备状态检测和数据包过滤功能,可以对进出云服务器的流量…...
基于Python 中创建 Sentinel-2 RGB 合成图像
一、前言 下面的python代码将带您了解如何从原始 Sentinel-2 图像创建 RGB 合成图像的过程。 免费注册后,可以从 Open Access Hub 下载原始图像。 请注意,激活您的帐户可能需要 24 小时! 二、准备工作 (1)导入必要的库…...
保姆级连接FusionInsight MRS kerberos Hive
数新网络,让每个人享受数据的价值https://xie.infoq.cn/link?targethttps%3A%2F%2Fwww.datacyber.com%2F 概述 本文将介绍在华为云 FusionInsight MRS(Managed Relational Service)的Kerberos环境中,如何使用Java和DBeaver实现远…...
electerm 跨平台的终端 /ssh/sftp 客户端
文章目录 electerm功能特性主题配色 electerm 每个程序员基本都离开SSH链接工具,目前市场上好用的基本都是收费的 给大家推荐一款国人开发的开源链接工具https://github.com/electerm/electerm 到目前为止star已经9.5K了,非常受欢迎 功能特性 支持ssh,telnet,serialport,本地和…...
Anthropic LLM论文阅读笔记
研究时间:与Instrcut GPT同期的工作,虽然其比ChatGPT发布更晚,但是其实完成的时间比ChatGPT更早。与ChatGPT的应用区别:该模型比ChatGPT回答我不知道的概率更高。将强化学习用于大语言模型(RLHF)࿱…...
docker启动容器失败,然后查看日志,docker logs查看容器出现报错:
docker 启动容器失败,然后docker logs 查看容器出现报错: error from daemon in stream: Error grabbing logs: invalid character l after object key:value pair在网上看到的 解决方案: 找到你日志文件目录: docker inspect …...
【开源】基于Vue.js的网上药店系统
项目编号: S 062 ,文末获取源码。 \color{red}{项目编号:S062,文末获取源码。} 项目编号:S062,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 药品类型模块2.3 药…...
App 设计工具
目录 说明 打开 App 设计工具 示例 创建 App 创建自定义 UI 组件 打开现有 App 文件 打包和共享 App 本文主要讲述以交互方式创建 App。 说明 App 设计工具是一个交互式开发环境,用于设计 App 布局并对其行为进行编程。 可以使用 App 设计工具:…...
毅速:3D打印随形透气钢为解决模具困气提供了新助力
在模具行业中,困气是一个较常见的问题。解决困气问题的方法有很多,透气钢就是其一。传统的制造的透气钢往往存在一些不足,如加工难度大、无法满足复杂形状的需求等。随着3D打印技术的发展,一种新型的随形透气钢技术逐渐崭露头角&a…...
某软件商店app抓包分析与sign加密算法实现
文章目录 1. 写在前面2. 抓包配置3. 抓包分析4. 接口测试5. sign加密算法6. 数据效果展示 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】…...
万界星空科技QMS质量管理系统功能
QMS质量管理系统结合质量决策、综合质量管理、过程质量控制三个层次要素,帮助企业实现产品全寿命周期质量数据的及时、灵活、准确和全面采集。 通过质量管理软件能够实现质量数据科学处理和应用,包括数据的系统化组织、结构化存贮、便捷式查询、定制化统…...
FreeRTOS Tickless模式实战:在STM32F103上实现电池续航翻倍的保姆级配置
FreeRTOS Tickless模式深度实战:STM32F103低功耗优化全解析 在物联网终端设备与便携式穿戴产品的开发中,电池续航能力往往是决定产品成败的关键因素。当工程师面对STM32F103这类经典Cortex-M3芯片时,如何在不更换硬件的前提下,通过…...
RK3588驱动编译踩坑记:手把手教你解决‘-Werror’导致的‘all warnings being treated as errors’
RK3588驱动编译实战:从-Werror报错到内核构建优化的完整指南 当你在深夜的调试灯光下,面对RK3588开发板驱动编译失败的红字报错,那种挫败感每个嵌入式开发者都深有体会。特别是当错误提示"cc1: all warnings being treated as errors&qu…...
别再手动挂载了!CentOS 7.6服务器数据盘一键挂载与开机自启保姆级教程(含fdisk分区详解)
CentOS 7.6数据盘智能挂载全攻略:从分区到自启的零失误实践 刚接触Linux服务器运维时,最让人头疼的莫过于那块"看得见却用不了"的数据盘。每次重启后都要重新挂载的繁琐操作,不仅浪费时间,更可能因操作失误导致数据丢失…...
从‘压缩壳’到‘保护壳’:聊聊UPX在软件安全中的双刃剑效应与真实案例
从‘压缩壳’到‘保护壳’:UPX在软件安全中的双刃剑效应深度解析 在软件安全领域,UPX(Ultimate Packer for eXecutables)一直是个充满争议的存在。这款开源压缩工具本意是减少可执行文件体积,却意外成为安全攻防战中的…...
从CAD转战CREO?这份高效上手攻略帮你快速打通草绘、零件与工程图核心模块
从CAD转战CREO:参数化设计思维与核心模块高效迁移指南 如果你已经熟练使用SolidWorks、AutoCAD或UG/NX等CAD软件,初次接触CREO时可能会感到困惑——为什么绘制一个简单矩形需要先草绘轮廓再标注尺寸?为什么修改模型参数会自动更新所有关联视图…...
B站视频下载终极指南:三步轻松获取4K大会员高清内容
B站视频下载终极指南:三步轻松获取4K大会员高清内容 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否曾经因为网络限…...
Hitboxer:键盘玩家的SOCD冲突终结者,提升游戏操作精度的终极方案
Hitboxer:键盘玩家的SOCD冲突终结者,提升游戏操作精度的终极方案 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在竞技游戏中,你是否曾因同时按下W和S键导致角色卡顿&#x…...
深度解析VMware Unlocker:突破macOS虚拟化限制的完整技术指南
深度解析VMware Unlocker:突破macOS虚拟化限制的完整技术指南 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在跨平台开发与测试日益重要的今天,许多开发者面临着一个共同的挑战…...
VMware Unlocker 3.0:终极指南 - 在Windows/Linux上免费运行macOS虚拟机
VMware Unlocker 3.0:终极指南 - 在Windows/Linux上免费运行macOS虚拟机 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 想在普通电脑上体验macOS系统吗?VMware Unlocker 3.0正是…...
AKAZE源码全解析——非线性扩散方程、FED加速与MLDB描述子的2319行C++
SIFT 用高斯模糊构建尺度空间。ORB 用图像金字塔暴力缩放。它们的共同缺陷是什么? 高斯模糊不分青红皂白,把边缘和噪声一起抹掉了。 2012年,Alcantarilla 提出了 KAZE 算法,用非线性扩散方程替代高斯平滑,让尺度空间的构建第一次做到了"该模糊的地方模糊,该保留的…...
