使用 OpenCV 将光栅图像转换为矢量图形?

Posted

技术标签:

【中文标题】使用 OpenCV 将光栅图像转换为矢量图形?【英文标题】:Convert raster images to vector graphics using OpenCV? 【发布时间】:2012-10-05 08:39:54 【问题描述】:

我正在寻找一种使用 OpenCV 将光栅图像转换为矢量数据的可能性。在那里我发现了一个函数cv::findContours(),它似乎有点原始(可能我没有完全理解):

它似乎只使用黑白图像(没有灰度和彩色图像),并且似乎不接受任何可能有助于噪声图像的过滤/错误抑制参数,以避免非常短的矢量线或避免不均匀多段线,其中一条直线会是更好的结果。

所以我的问题是:OpenCV 是否有可能对彩色光栅图像进行矢量化,然后将颜色信息分配给生成的 polylinbes?以及如何将降噪和错误抑制应用于这样的算法?

谢谢!

【问题讨论】:

你能告诉我们你想要矢量化的输入图像吗? 没有一个必须使用的输入图像,所有其他图像都相似。但要大致了解我的意思:想象一下 Strbcks-logo,它由两种颜色组成(加上一种用于白色背景),因此应根据颜色对生成的矢量数据进行排序. 【参考方案1】:

如果您想按颜色对图像进行光栅化处理,我建议您在某些颜色组上对图像进行聚类(或对其进行量化),然后提取每种颜色的轮廓并转换为所需的格式。 OpenCV 中没有现成的矢量化方法。

【讨论】:

这似乎是一个先有鸡还是先有蛋的问题:哪些颜色与矢量化相关只能由矢量化过程本身评估(图像可能包含一些仅从一个相关颜色中褪色的颜色边缘到另一个,因此不会产生相关的矢量线)。无论如何,谢谢你的提示。

以上是关于使用 OpenCV 将光栅图像转换为矢量图形?的主要内容,如果未能解决你的问题,请参考以下文章

将点转换为矢量线的算法。 (光栅到矢量)

如何以编程方式 (Python/JS/C++) 将矢量图形 (SVG) 插入 JPG/TIF 等光栅图像?

一般打印光栅和/或矢量图像

用光栅图像替换 PDF 中的矢量图像

将矢量轮廓区域(边界)转换为光栅图(像素网格)

将大矢量图像转换为二进制矩阵的快速方法