【问题标题】:Extract shape outline points from PNG image in iOS从iOS中的PNG图像中提取形状轮廓点
【发布时间】:2013-11-11 15:15:13
【问题描述】:

我需要在我使用 cocos2d 2.1 编写的 iOS 游戏中实现轮廓检测功能 例如用户会给我一张图片(PNG透明):

所以,我需要检测形状多边形点并从中创建 box2d 主体,然后我可以将此图像放入我的 box2d 场景中。

我希望输出 NSMutableArray 具有在图像上检测到的每个多边形的点数组。 PhysicsEditor 也一样,结果如下:

这也是使用 VertexHelper 的结果(显示错误的检测方式,作为一个多边形...):

也是SpriteHelper,但不检测图像的其他部分

我的问题是:我该怎么做?什么方法更好更快? 我在 google 中寻找解决方案,但是我找不到任何适合我需要的解决方案...

【问题讨论】:

  • 搜索“轮廓追踪算法”。请记住,您必须确保 Box2D 的顶点逆时针缠绕,并且可能需要将形状拆分为多个形状以确保每个单独的形状都是凸形的。
  • 新 box2d box2d.org 具有:“多边形创建现在计算凸包。不再需要对顶点进行排序。”那么,据我所知,逆时针方向没有必要?
  • 关于“轮廓追踪算法”——你能指出 iOS 中的一些例子吗?

标签: ios objective-c cocos2d-iphone shapes outline


【解决方案1】:

我猜您正在寻找 Sobel 边缘检测过滤器。查看 Brad Larson 创建的 GPUImage 框架。它有一个使用 Objective-C 的 Sobel 边缘检测滤波器的实现,这可能对你有用。

【讨论】:

  • 我已经检查过这个框架,但这不是我需要的,因为我只需要图像的轮廓。
  • 另外,我正在尝试找到最轻量级的库,因为大多数这些库都太重并且会增加 ipa 大小。
【解决方案2】:

最后通过使用 Chipmunk Autogeometry 功能完成了这项工作。像魅力一样工作。

只需使用https://github.com/slembcke/ConcaveSprite/blob/master/ConcaveSprite/ConcaveSprite.m,我就节省了时间...

【讨论】:

    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 2019-08-15
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多