小编Fel*_*ieb的帖子

如何在也使用OpenCV的项目中使用Wikitude?

我们无法让Wikitude在Xamarin跨平台项目(Android和iOS)中工作,该项目也使用OpenCV.

安装程序

Xamarin跨平台项目使用MvvmCross进行以下设置:

  • 核心项目,PCL提供视图模型,业务逻辑和平台无关的逻辑.
  • OpenCV.Droid,绑定项目,为Android部分提供OpenCV.
    • Android Library(AAR),由官方OpenCV SDK for Android创建.
  • OpenCV.iOS,绑定项目使用P/Invoke将OpenCV提供给iOS部分.
    • 自己的静态库项目.
    • 包括官方OpenCV SDK for iOS的静态库,它只是一个Apple Framework(结合了静态库和头文件).
    • 通过自己的API公开OpenCV功能,以最大限度地减少编组代码的数量.
  • UI.Droid,提供视图和平台特定逻辑的Android平台项目.
  • UI.iOS,iOS平台项目提供视图和平台特定的逻辑.

我们的ARchitectWorld使用对象跟踪,并且可以在Android和iOS的Xamarin组件中包含的Wikitude示例中成功进行测试.

问题

当我们的iOS项目开始ARchitectWorld,世界被加载,我们收到onLoaded-callback创建时TargetCollectionResource,还有onTargetsLoaded-callback创建时ObjectTracker.到目前为止,Wikitude的示例项目以及我们的项目中的行为是相同的.

问题是,使用相同WTO文件的同一对象在我们的项目中没有被识别,而它在示例项目中工作得很好.

调查

当问题发生时,我们简化了处理ARchitectWorld的ViewController中的逻辑,以排除我们代码中的问题.

然后我们通过将ARchitectWorld添加到我们repo历史中的不同提交中来调查我们的项目,我们认为这些提交是关键更改并且发现了提交,对象跟踪正在进行中.

为了找到关键的变化,我们使用了git-bisect并确定了引入问题的提交.通过该提交,我们的OpenCV绑定项目的静态库已更新,因为它缺少设备架构 - 它只有模拟器拱,基本上是x86_64.

在那之后,我们假设,Wikitude可能会在内部使用OpenCV,我们可能会发生符号冲突,即使链接器没有抱怨重复的符号.虽然,Wikitude不使用OpenCV,但搜索Wikitude和OpenCV的组合使用会带来一些没有解决方案的结果:

然后我们发现,Wikitude和OpenCV都包含部分相同的第三方代码.

问题

在链接的帖子中,Wikitude支持非常公开地回答,建议进行内部讨论并回到OP.虽然线程中没有进一步的答案,但表明没有答案或信息已通过另一个渠道进行交换.

在其他帖子中,我们看到了将OpenCV与Wikitude一起使用的建议,即准备可视化数据并将其提供给输入插件.这表明,OpenCV和Wikitude可以一起使用.

  • 可以,如果,如何在我所描述的Xamarin项目中实现这一目标?
  • 它需要特定版本的OpenCV吗?(我们目前正在使用v3.3.1.)

也许社区也实现了这一点,我非常期待有关这方面的答案.我们还联系了Wikitude支持,如果我们收到任何有助于回答问题的信息,我们会在这里提供反馈信息.

android opencv ios wikitude xamarin

6
推荐指数
1
解决办法
136
查看次数

layoutSubviews() 中子视图的边界为零

自定义的子视图的子视图的边界UIView似乎是 0 in layoutSubviews(),因此使用边界layoutSubviews()是一个问题。

为了说明问题,我在 GitHub 上放了一个演示:SOBoundsAreZero

这是自定义视图实现的直接链接:DemoView.swift

自定义视图“DemoView”的结构是这样的:

DemoView
    firstLevelSubview
        secondLevelSubview
Run Code Online (Sandbox Code Playgroud)

此结构是使用自动布局以编程方式创建的。

layoutSubviews()被调用时,视图和firstLevelSubview有预期的界限,但secondLevelSubview的范围是0。

我希望所有使用自动布局的子视图都有正确的边界,至少在最后一次调用layoutSubviews.

该结构是对真实案例的抽象。为了避免这个问题,可以将 secondLevelSubview 作为第一级子视图添加到 DemoView。虽然,这在实际情况中是不可行的。

我觉得我在这里遗漏了一些简单的东西,即使这是预期的行为。

uiview ios autolayout swift

6
推荐指数
1
解决办法
2270
查看次数

标签 统计

ios ×2

android ×1

autolayout ×1

opencv ×1

swift ×1

uiview ×1

wikitude ×1

xamarin ×1