c++ - 是否有计算在单色背景上绘制的 Sprite 边界矩形的算法?

标签 c++ algorithm geometry

想象一个普通的矩形位图,比方说,1024x768 像素填充白色。位图上绘制了一些(非重叠的) Sprite :圆形、正方形和三角形。

是否有一种算法(甚至可能是 C++ 实现)在给定位图和背景颜色(白色,在上例中)的情况下,生成一个列表,其中包含每个 Sprite 的最小边界矩形?

这是一些示例:在左侧,您可以看到我的代码给出的示例位图(以及“背景”为白色的信息)。在右侧,您可以看到相同的图像以及四个形状的边界矩形(红色);我正在寻找的算法计算这些矩形的几何形状。

Input picture Output picture

一些绘画程序具有选择形状的类似功能:它们甚至可以计算看似任意的边界多边形。无需手动拖动选择矩形,您可以单击“背景”(什么是背景,什么不是由某个阈值决定),然后该工具会自动计算绘制到背景上的对象的形状。我需要这样的东西,但如果我只有对象的矩形边界区域就完全没问题了。

我开始意识到 OpenCV ;它似乎是相关的(它似乎是一个包含我能想到的所有图形算法的库 - 然后是一些)但是在快速的信息量中我找不到我正在考虑的算法的方法。如果 OpenCV 不能做到这一点,我会感到惊讶,但我担心您必须拥有博士学位才​​能使用它。 :-)

最佳答案

这是关于这个主题的精彩文章:

http://softsurfer.com/Archive/algorithm_0107/algorithm_0107.htm

我认为这里不需要博士学位 :)

关于c++ - 是否有计算在单色背景上绘制的 Sprite 边界矩形的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8512680/

相关文章:

c++ - 我无法将堆内存和 OOP 范围联系起来

c# - 如何将命名管道字符串从非托管代码空间发送到托管代码空间?

java - 如何在三角形上填充颜色

PHP + CSS + Lettering.js 创建曲线文字

python - 两条线段(线)之间的角度小于 180

c++ - 如何降低以下代码块的时间复杂度?

c++ - 将数据从 vector 推回到 map 的 vector

c# - 如何实现带有备份选项的树?

python - Python sorted() 内置函数 vs. list insert() 方法的效率

algorithm - 改进的 BFS 树遍历