【问题标题】:How to get rectangles around the objects in the image?如何在图像中的对象周围获得矩形?
【发布时间】:2014-10-15 05:15:25
【问题描述】:

以编程方式获取图像中对象周围的矩形的最简单方法是什么?在c#中寻找解决方案

我不完全确定如何进行搜索。任何提示都非常受欢迎。

*编辑: 正如 Bobby 猜对的那样,我正试图找到这些斑点周围的矩形。这些斑点的大小、形状和位置各不相同。例如,它们可以是星形和圆形。正如 TaW 所说,我需要弄清楚哪些像素是相互连接的。你会如何处理漏洞?

祝你好运

【问题讨论】:

  • 我看不到对象周围的任何矩形。 对象周围的矩形是什么意思?
  • 他想在红色斑点周围绘制矩形
  • 你用什么画图?
  • 您想为此投入多少工作?您对图像了解多少以及它们将如何变化,尤其是。在颜色的数量方面?除了查找库之外,您还必须扫描像素栅格以查找更改列表,然后通过这些更改来识别连接的那些..
  • 如您所说,您的首要任务是确定用于定义连续图像(blob)的算法。一旦你有了它,确定你想要围绕 blob 的边距大小(2px、3px 等)。那么剩下的问题是你想使用什么技术?您使用的是 WinForm 还是 WPF?两者都有不同的绘图库,我强烈建议不要使用 GDI for WinForms。您还可以选择使用 OpenGL 进行绘图……Unity 没有绘图库吗?

标签: c# image rectangles


【解决方案1】:

一个简单的方法可以是

  1. 扫描图像中的红色像素
  2. 执行FloodFill 跟踪最小/最大 x 和 y 以成功替换颜色...当填充完成时,您将拥有一个边界框。另外,您已经消除了该 blob 的所有红色像素
  3. 转到 1 并继续扫描

【讨论】:

【解决方案2】:

这是 Find Waldo 的简化问题,假设您可以在 C#.net 中调用 Wolfram 语言。我这台电脑上没有 Wolfram,但应该是这样的:

img = Import["http://i.stack.imgur.com/qlVlM.png"];
objectshape = SelectComponents[DeleteBorderComponents[Binarize[img, {0, .7}]], "Area"}, 10 < #1 < 1000 && #2 > 0 &];
shapes = ComponentMeasurements[ImageMultiply[img, objectshape], {"BoundingBoxArea"}][[All, 2]];
Show[img, Graphics[{Red, Thick, Rectangle @@ # & /@ shapes}]]

非常相似的结果,我的答案基于:segmentation analysis

【讨论】:

  • 好吧,我确信这很好用,但是对于这个单一的任务,我认为将整个 wolfram 库纳入统一 ^^' 但感谢您推荐这个,尽管我可能有更多将来使用它:)
猜你喜欢
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多