首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >匹配等高线并使用OpenCV、EmguCV或其他替代库平滑它们

匹配等高线并使用OpenCV、EmguCV或其他替代库平滑它们
EN

Stack Overflow用户
提问于 2015-03-12 04:30:46
回答 1查看 1.4K关注 0票数 0

我是一个使用OpenCV和EmguCV的初学者。我有两个问题寻找轮廓(见下图)。问题A是关于不同的轮廓是如何相互匹配的。问题B是关于如何获得更平滑的轮廓。

要检测我正在使用的等高线:

( FindContours(Emgu.CV.CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_NONE,Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_LIST);

有人能给我一些建议吗?

非常感谢!!

EN

回答 1

Stack Overflow用户

发布于 2015-03-12 06:57:32

骨架化是您的第一个问题的解决方案。请注意,有几种骨架化,因此,如果您尝试的没有产生期望的输出,尝试另一个。

对于问题B,如果不对图像进行缩放(人为地增大其大小),就不可能使轮廓变得更平滑。至于使等高线在4连通性中连续(因此对角线不算在内),您可以修改找到的等高线的链码。

CV_CHAIN_APPROX_NONE绝对存储所有的轮廓点。也就是说,轮廓的任何2个后续点(x1,y1)和(x2,y2)都将是水平的、垂直的或对角邻域,即最大(abs(x1-x2),abs(y2-y1)==1)。

对于每个等高线,遍历其链码数组。如果您遇到两个后续点之间的对角线变化,在链码数组中插入一个新的点,它将“填充对角线”以满足您的需要。例如:

代码语言:javascript
运行
AI代码解释
复制
    xxx                    becomes     xxxx          or   xxx
       xxx                                xxx               xxxx
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29009844

复制
相关文章
Swift 日历添加事件 删除事件
import EventKit /** Privacy - Calendars Usage Description 添加日历权限 info.list 配置权限 */ /// 日历添加事件 class KKAddEventClasse: NSObject { /// 添加成功回调 typealias SuccessAddEvent = ((_ identifier: String) -> Void) /// 添加失败回调 typealias ErrorAddEvent =
菜菜不吃蔡
2021/03/20
4.1K1
如何获取相应tableview中的touchesBegan事件[通俗易懂]
项目中使用了UITableViewController,里面有用到UITextView需要点击键盘外的地方来隐藏我的键盘
全栈程序员站长
2022/09/15
1.6K0
如何从列表中获取元素
观察URAM的物理管脚,不难发现A/B端口都有相应的地址、使能、读写控制信号。与BRAM不同的是URAM的读写使能信号是同一个管脚RDB_WR_A/B,其为0时执行读操作,为1时执行写操作,这意味着一旦A/B端口独立,同一端口的读写操作就无法同时发生,因此,如果采用上一篇文章中介绍的方法将其配置为两个独立的单端口RAM,其读写行为与常规的单端口RAM是不同的,进一步而言,此时的读写行为类似于NO_Change模式。
Lauren的FPGA
2019/10/30
18.8K0
如何从JavaScript对象中删除属性?
在使用 JavaScript 中的对象时,你可能会遇到需要从对象中完全删除属性的情况。为实现这一点可以有好几个选择:
疯狂的技术宅
2021/04/01
13.2K0
如何从组中删除Linux用户?
在Linux中,用户可以是一个主要组和一个或几个次要(辅助)组的成员。文件“ / etc / group”为Linux系统中的每个用户定义了组成员身份。
用户6543014
2020/04/07
20.3K0
Javascript 中如何存储,获取和删除 Cookies
Javascript 中如何存储,获取和删除 Cookies。 function setCookie(name,value){ var exp = new Date(); exp.setTime(exp.getTime() + 30*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); } function getCookie(name){
Denis
2023/04/15
1.6K0
从Git仓库中恢复已删除的分支、文件或丢失的commit
比如:执行checkout -f 或 reset -hard 或 branch -d删除一个分支
用户8705050
2021/06/08
3.7K0
如何从Ubuntu Linux中删除Firefox Snap?
Ubuntu Linux是一款广受欢迎的开源操作系统,拥有强大的功能和广泛的应用程序选择。默认情况下,Ubuntu提供了一种称为Snap的软件打包格式,用于安装和管理应用程序。Firefox是一款流行的开源网络浏览器,而Firefox Snap是Firefox的Snap版本。
网络技术联盟站
2023/05/25
5.6K0
如何从Ubuntu Linux中删除Firefox Snap?
Exchange删除移动完成的邮箱记录
在Exchange服务器维护中,常用 New-MoveRequest 命令来移动邮箱到指定的数据库。要想查询移动的状态,可使用 Get-MoveRequest 命令来获取移动的状态。
水中游泳的小鸟
2019/03/16
1.2K0
如何从 Python 列表中删除所有出现的元素?
在 Python 中,列表是一种非常常见且强大的数据类型。但有时候,我们需要从一个列表中删除特定元素,尤其是当这个元素出现多次时。本文将介绍如何使用简单而又有效的方法,从 Python 列表中删除所有出现的元素。
网络技术联盟站
2023/06/01
14K0
Spring 如何从 IoC 容器中获取对象?
前面几篇文章主要分析了 Spring IoC 容器如何初始化,以及解析和注册我们定义的 bean 信息。
WriteOnRead
2021/03/12
10.4K0
Spring 如何从 IoC 容器中获取对象?
网页中如何获取客户端系统已安装的所有字体?
如何获取系统字体? 1.首先在需要获取系统字体的网页<body>后加入以下代码: <DIV style="LEFT: 0px; POSITION: absolute; TOP: 0px"> <OBJECT ID="dlgHelper" CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" WIDTH="0px" HEIGHT="0px"> </OBJECT> <script src="FontFacesMenu.js" language="javascript" type="text/javascript"></script> </DIV>
Java架构师必看
2021/03/22
7.4K0
如何优雅的从Array中删除一个元素
从JavaScript数组中删除元素是开发人员经常遇到的常见编程范例。与许多JavaScript一样,这并不像它应该的那么简单。
Jean
2018/12/21
10.3K0
如何从 Python 中的字符串列表中删除特殊字符?
在进行字符串处理和文本分析时,有时我们需要从字符串列表中删除特殊字符。特殊字符可能是空格、标点符号、换行符等,在某些情况下它们可能干扰我们的文本处理或分析任务。Python 提供了多种方法来删除字符串列表中的特殊字符。本文将详细介绍在 Python 中删除字符串列表中特殊字符的几种常用方法,并提供示例代码帮助你理解和应用这些方法。
网络技术联盟站
2023/06/01
9.5K0
Git 命令行教程:如何在 GitLab 中恢复已删除的分支
在软件开发过程中,版本控制是一个至关重要的环节。Git 是最流行的分布式版本控制系统之一,它能够帮助团队高效地管理代码。然而,有时候会发生意外,例如代码误合、错误的删除等情况,导致重要的开发分支本地和远程不慎被删除。本文将为您介绍如何使用 Git 命令行在 GitLab 中恢复已删除的分支,帮助您快速解决这类问题。
修己xj
2023/08/25
1.4K0
Git 命令行教程:如何在 GitLab 中恢复已删除的分支
Android向系统日历添加日程事件
在项目开发过程中,有时会有预约提醒、定时提醒等需求,这时我们可以使用系统日历来辅助提醒。通过向系统日历中写入事件、设置提醒方式(闹钟),实现到达某个特定的时间自动提醒的功能。这样做的好处是由于提醒功能是交付给系统日历来做,不会出现应用被杀情况,能够做到准时提醒。 一般来说实现向系统日历中读写事件一般有以下几个步骤: (1)需要有读写日历权限; (2)如果没有日历账户需要先创建账户; (3)实现日历事件增删改查、提醒功能;
developerHaoz
2022/05/13
3.3K0
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7.7K0
算法-删除已排序数组中的重复项
版权声明: https://blog.csdn.net/li_xunhuan/article/details/89843311
Fisherman渔夫
2019/07/31
3.6K0
点击加载更多

相似问题

如何在颤振项目中使用Logger

26

Dart /颤振错误:“toStringDeep”未为类“Logger”定义

41

颤振:颤振插件、颤振软件包和颤振模块有什么区别?

24

Android和颤振

14

颤振清洁和颤振运行(Ios)永不结束

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档