计算机图像处理:图像轮廓

图像轮廓

图像阈值分割主要是针对图片的背景和前景进行分离,而图像轮廓也是图像中非常重要的一个特征信息,通过对图像轮廓的操作,就能获取目标图像的大小、位置、方向等信息。画出图像轮廓的基本思路是:先用阈值分割划分为两类图像,再去寻找轮廓。OpenCV中使用cv2.findContours(image,mode,method)函数来寻找图像轮廓,其中参数imagemodemethod分别为输入的图像、轮廓搜索模式(决定了轮廓的提取方式)、轮廓近似方法(决定了如何表达轮廓)。mode轮廓的检索模式有:

cv2.RETR_EXTERNAL表示只检测外轮廓;

cv2.RETR_LIST表示检测的轮廓不建立等级关系;

cv2.RETR_CCOMP表示建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层;

cv2.RETR_TREE表示建立一个等级树结构的轮廓。

method轮廓的近似办法有:

cv2.CHAIN_APPROX_NONE表示存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即maxabsx1-x2),absy2-y1))==1

cv2.CHAIN_APPROX_SIMPLE表示压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息;

    cv2.CHAIN_APPROX_TC89_L1CV_CHAIN_APPROX_TC89_KCOS表示使用teh-Chinl chain 近似算法。

cv2.findContours()函数的输出信息contourshierarchy分别为返回的轮廓和图像的拓扑信息(轮廓层次)。如果想要显示出图像轮廓,还需要使用OpenCV中的cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)函数来绘制出图像轮廓,其中imagecontourscontourIdxcolor分别为输入的图像、绘制的轮廓、轮廓填充和轮廓的颜色。

示例代码

def f_contours():img = cv.imread("cup.jpg")# draw会改变原图,这里做一个备份img_copy = img.copy()gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)ret, thresh = cv.threshold(gray, 128, 255, cv.THRESH_BINARY)cv_show(thresh)# 这个函数只支持接收单颜色通道图像,否则报错contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)print(len(contours))result = cv.drawContours(img_copy, contours, -1, (0, 0, 255), 2)cv_show(result)

效果图片 

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

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

相关文章

如何修复wmvcore.dll缺失问题,wmvcore.dll下载修复方法分享

近年来,电脑使用的普及率越来越高,人们在日常生活中离不开电脑。然而,有时候我们可能会遇到一些问题,其中之一就是wmvcore.dll缺失的问题。wmvcore.dll是Windows平台上用于支持Windows Media Player的动态链接库文件,如…

命运2中文wiki搭建记录——MediaWiki安装与初设置

命运2中文wiki搭建记录 本文转自我的博客,原文地址——>命运2中文wiki搭建记录——MediaWiki安装与初设置 可能是出于闲的发霉,想自己搭建一个命运2wiki。 因为bilibili上的命运2Bwiki也全是自己搭的。指路——>命运2Bwiki 但是当自己实际上手Me…

windows系统删除网络适配器

此电脑,右键,管理 打开本机设备管理器 其中找到网络适配器: 选中要删除的,右键点击“卸载设备”,点击卸载即可完成。

控价与数据分析的关系

品牌在做线上控价时,会面对许多的数据,如店铺数据、行业数据,当这些数据仅仅只是拿来做监测低价输出低价报表使用,是没有发挥其最大作用的,因为商品链接的字段较丰富,涉及的内容会包含销量、评价量、促销信…

Linux:理解进程的多种状态

文章目录 理解状态运行状态阻塞状态挂起状态Linux系统下的进程状态的解析状态的查看 本篇总结的是进程的多种状态 对于进程的状态理解,在教材上通常是有下面的思维模式图 那么如何理解上面图片中的内容? 理解状态 如何理解状态?其实理解状…

PyCharm中使用pyqt5的方法2-2

1.2 是否下载成功 按照以上步骤安装了“pyqt5”、“pyqt5-tools”模块和“pyqt5designer”模块后,可以打开保存这三个模块的路径,找到其对应的文件夹,即可验证是否下载成功。 获取PyCharm保存下载模块路径的方法是,在PyCharm界面…

解决java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.的错误

文章目录 1. 复现错误2. 分析错误3. 解决问题3.1 下载Hadoop3.2 配置Hadoop3.3 下载winutils3.4 配置winutils 1. 复现错误 今天在运行同事给我的项目,但在项目启动时,报出如下错误: java.io.FileNotFoundException: java.io.FileNotFoundEx…

【AI视野·今日NLP 自然语言处理论文速览 第四十二期】Wed, 27 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 27 Sep 2023 Totally 50 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Attention Satisfies: A Constraint-Satisfaction Lens on Factual Errors of Language Models Authors Mert …

苹果 CMS 原生 Java 白菜影视 App 源码【带打包教程】

苹果 CMS 原生 Java 白菜影视 App 源码是一款功能强大的影视应用程序,支持画中画、投屏、点播、播放前广告和支持普通解析等多种功能。与萝卜 App 源码相比,该套源码更加稳定,且拥有画中画投屏和自定义广告等功能,提高了安全性。 …

河北吉力宝以步力宝健康鞋引发的全新生活生态商

在当今瞬息万变的商业世界中,成功企业通常都是那些不拘泥于传统、勇于创新的先锋之选。河北吉力宝正是这样一家企业,通过打造一双步力宝健康鞋,他们以功能性智能科技穿戴品为核心,成功创造了一种结合智能康养与时尚潮流的独特产品…

Leetcode算法入门与数组丨5. 数组二分查找

文章目录 1 二分查找算法2 二分查找细节3 二分查找两种思路3.1 直接法3.2 排除法 task09task10 1 二分查找算法 二分查找算法是一种常用的查找算法,也被称为折半查找算法。它适用于有序数组的查找,并通过将待查找区间不断缩小一半的方式来快速定位目标值…

Redis 线程模式

Redis 是单线程吗? Redis 单线程指的是 [接收客户端请求 -> 解析请求 -> 进行数据读写操作 -> 发送数据给客户端] 这个过程是由一个线程 (主线程) 来完成的,这也是常说的 Redis 是单线程的原因。 但是 ,Redis 程序不是单线程的&am…

VB从资源文件中播放wav音乐文件

Private Const SND_SYNC &H0 Private Const SND_MEMORY &H4 API函数 Private Declare Function sndPlaySoundFromMemory Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, ByVal uFlags As Long) As Long 音乐效果请“单击” Pr…

美国零售电商平台Target,值得入驻吗?如何入驻?

Target 是美国最大的零售商之一,在品牌出海为大势所趋的背景下,它在北美电商中的地位节节攀升。Target 商店在众多垂直领域提供各种价格实惠的自有品牌,吸引越来越多的跨境商家入驻,如美妆、家居、鞋服、日用百货等,随…

在比特币上支持椭圆曲线 BLS12–381

通过使用智能合约实现来支持任何曲线 BLS12–381 是一种较新的配对友好型椭圆曲线。 与常用的 BN-256 曲线相比,BLS12-381 的安全性明显更高,并且安全目标是 128 位。 所有其他区块链,例如 Zcash 和以太坊,都必须通过硬分叉才能升…

Android Studio 创建项目不自动生成BuildConfig文件

今天在AS上新建项目发现找不到BuildConfig文件,怎么clear都不行。通过多方面查找发现原来gradle版本不同造成的,Gradle 8.0默认不生成 BuildConfig 文件。 如上图,8.0版本是没有source文件夹 上图是低于8.0版本有source文件夹 针对这个问题&…

Anchors

这是源代码定义的anchors概念: 实现过程: 假如有一张500500的图片,那么经过第一步深度卷积网络之后(4次池化),最终就会变成一个3232的特征: 在开源代码实现里面: 所以经过卷积完之后…

D. A Simple Task

Problem - D - Codeforces 思路:这个题就是求环的数量,通过数据范围的大小,我们可以想到用状压dp来做,因为只有19个点,我们可以将环的路径进行状态压缩,用一个二进制数表示环,当某一位为1时表示…

3、组件和容器

3、组件和容器 Frame 万物皆对象,窗口也是一个对象,这里Frame也是一个对象,我们可以看到Frame是可以new出来的,它是属于java.awt包下的 学习中想要知道这个类怎么用可以采用查JDK帮助文档,这里推荐查看源码&#xff0…

解决 MyBatis-Plus 中增加修改时,对应时间的更新问题

问题:在添加修改时,对应的 create_time 与 insert_time 不会随着添加修改而自动的更新时间 第一步:首先在对应的属性上,加上以下注解 如果只添加以下注解,在增加或者修改时,可能对应的 LocalDateTime 会出…