- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 Emgu CV 从道路网络图像的轮廓中提取了一组闭合多边形。多边形代表道路轮廓。结果如下所示,绘制在 OpenStreetMaps map 上(来自 Emgu CV 的“像素”形式的多边形已转换为要绘制的纬度/经度形式)。
表示道路轮廓的多边形集:
我现在想计算这组多边形 的 Voronoi 图,这将帮助我找到道路的中心线。但在 Emgu CV 中,我只能找到一种方法来获取一组点集的 Voronoi 图。这是通过查找点集的 Delaunay 三角剖分(使用 Subdiv2D 类)然后使用 GetVoronoiFacets 计算 voronoi 面来完成的。
我已经尝试计算集合中所有多边形定义的 点 的 Voronoi 图(每个多边形都是一个点列表),但这给了我一个极其复杂的 Voronoi 图,作为一个可能期望:
点集的 Voronoi 图:
这张图片显示了第一张图片的一小部分(为清楚起见,因为它太复杂了)。确实图中的一些线似乎代表了道路中心线,但其他线太多了,很难找到提取“好”线的标准。
我面临的另一个潜在问题是,正如您应该能够从第一张图片中看出的那样,一些多边形位于其他多边形的内部,因此我们不处于一组不相交的标准情况中 封闭的多边形。也就是说,有时道路位于一个多边形的外边界和另一个多边形的内边界之间。
我正在寻找有关如何使用 Emgu CV(或 Open CV)计算多边形集的 Voronoi 图的建议,希望能克服我已经概述的第二个问题。我也愿意接受其他关于如何在不使用 Emgu CV 的情况下实现这一目标的建议。
最佳答案
如果您已经有了多边形,您可以尝试计算 Straight Skeleton .
我没试过,但 CGAL 有一个 implementation .请注意,此特定功能 license是 GPL。
一个可能的问题可能是:
The current version of this CGAL package can only construct the straight skeleton in the interior of a simple polygon with holes, that is it doesn't handle general polygonal figures in the plane.
可能有解决方法。例如,您可以将所有多边形包含在一个更大的矩形中(这样原始多边形将成为新矩形的孔)。如果原始多边形有孔,这可能效果不佳。为了解决这个问题,您可以对每个有孔的多边形执行算法,然后将所有多边形放在一个矩形中,移除所有孔并再次执行算法。
关于opencv - Emgu CV(或 OpenCV)中多边形集的 Voronoi 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36501788/
我使用的是 Emgu 2(使用 opencv 2.4.10.1 的那个),它运行非常稳定,不会崩溃。我现在已经升级到 Emgu 3.1.0.1,我的应用程序有时会在几小时或一天内崩溃并出现 Acces
您好,我想做的是将 Emgu.CV.Mat 分配给 Emgu.CV.UI.ImageBox 但我一直收到 CvInvokeCore.cs 文件中的 System.AccessViolationExce
我在 C# 中使用 EmguCV,当我想从网络摄像头抓取帧时遇到问题,语句中出现红色下划线: imgOrg = capturecam.QueryFrame(); error: Cannot impli
我能够将 emgu 图像格式转换为字节字符串,这确实可以使用此代码保存在 MySQL 数据库上,但图像以 Windows 图像查看器无法识别的格式保存 string myCon
我有点碰壁我可能只是对如何在 .net(c# express 2010)中设置项目缺乏一些基本的了解,但我似乎无法让这个程序工作 基本上,我正在尝试设置一个简单的程序,该程序将获取网络摄像头馈送并检查
我正在使用 EmguCV 3.1 开发人脸识别应用程序。我正在使用 EigenFaceRecognizer 作为识别算法。我尝试使用以下代码训练图像。 List> trainingImages
我正在开发一个使用 OpenCV 库的项目,它使用 Emgu.CV.Image 作为从相机捕获的图像。 我正在尝试将代码移动到 Microsoft Azure 辅助角色中以处理云中的图像处理。 我当前
我从以下位置下载 sift 实现:https://sites.google.com/site/btabibian/projects/3d-reconstruction/code但我收到错误消息:命名空
我正在尝试使用EmguCV检测字符标记,并且已经从OpenCV网站复制并重写了example。 我的代码如下所示: Mat cameraMatrix = new Mat(new Size(3, 3),
我正在使用 Emgu CV 库用 Visual Basic 语言编写一些代码。 我需要知道如何使用函数 AdaptiveThreshold Dim inputImage As Emgu.CV.Inpu
我仍在学习 Emgu CV,我需要从包含 PNG32 数据的字节数组中加载图像。我正在按如下方式加载图像(这是工作示例): FileStream fs; Bitmap bitmap; Image im
我正在做一个项目,需要从表面的红外激光中识别点。我用的是带红外滤镜的相机 一些输入图像: 也可以有几个点。因此,我尝试从网络摄像头中锐化此图像,然后使用Emgu CV的FindContours方法。
我正在使用 emgu/opencv 来查找一些扁平 Blob 的位置。我目前可以以像素为单位找到它们的位置,并希望将其转换为世界坐标(in/mm)。我看过 emgu 的相机校准 example ,但我
我正在使用 Emgu 在 Visual Studio 上使用 C#。 我正在对一张大图像进行一些图像处理。我想到了将图像分成两半,并行进行操作,然后合并图像。 为了实现这一目标,我发现了一些关于获取图
我无法使用 Emgu CV 播放视频 显示错误 Unable to create capture from 184.avi 代码如下: public partial class Form1 : For
我正在从事一个实验项目,其中的挑战是识别和提取用户点击/触摸的图标或控件的图像。我正在尝试的方法如下(我需要一些帮助来完成第 3 步): 1) 当用户点击/触摸屏幕时截屏: 2) 应用边缘检测: 3)
我发现了一个类似的问题:creating histogram using emgu cv c# 当我传递灰度图像时效果很好,但是当我使用 Matrix 时,程序会抛出异常。我的代码: Matrix m
有人可以指导我介绍各向异性扩散的一些现有实现方式,最好是 perona-malik扩散吗? 最佳答案 翻译以下MATLAB代码: % pm2.m - Anisotropic Diffusion rou
我在项目中使用emgu。 我得到这个异常(exception): 这里是异常的细节: opencv_core242在文件夹项目中,并且平台目标设置为x86。 任何想法可能导致异常的原因以及如何解决?
今天是个好日子, 我正在尝试为视频构建实时帧插值程序。 因为我一直使用C#,所以我选择将OpenCV与Emgu 3.2.0(可用的最新版本)一起使用。 就是这样: 首先,我有2张分别名为frame1和
我是一名优秀的程序员,十分优秀!