7

我有一个 Unity/iOS 应用程序,它可以捕获用户的照片并将其显示在 3D 环境中。现在我想利用CIFaceFeature它来查找眼睛位置,这需要访问本机(Objective-C)层。我的流程看起来像:

Unity -> WebCamTexture(编码并将图像发送到本机 -这是 SLOW

Obj-C -> CIFaceFeature(查找眼睛坐标)

unity -> 显示眼睛位置

我有一个工作原型,但速度很慢,因为我在 Unity (WebCamTexture) 中捕获图像,然后将其发送到 Obj-C 进行 FaceFeature 检测。似乎应该有一种方法可以简单地让我的 Obj-C 类“检查活动相机”。这必须比编码和传递图像快得多。

所以我的问题,简而言之:

  • 我可以在 Obj-C 中查询“当前是否有摄像头正在拍摄?”
  • 如果是这样,我如何从当前运行的会话中“快照”图像?

谢谢!

4

2 回答 2

2

您可以通过统一更改 CameraCapture.mm 来访问相机的预览捕获流。

我建议您查看一些名为 Camera Capture 的现有插件,以了解如何将额外的相机 I/O 功能添加到捕获会话/“捕获管道”中。

让你朝着正确的方向前进。看看 CameraCapture.mm 中的函数 initCapture :

- (bool)initCapture:(AVCaptureDevice*)device width:(int)w height:(int)h fps:(float)fps 

在这里,您将能够添加到捕获会话。

然后你应该看看 Apple 在面部识别上提供的代码示例:

https://developer.apple.com/library/ios/samplecode/SquareCam/Introduction/Intro.html

干杯

于 2016-03-22T11:03:42.457 回答
1

Unity 3D 允许执行本机代码。在脚本参考中,查找本机插件。通过这种方式,您可以显示本机 iOS 视图(使用相机视图,可能根据您的要求隐藏)并运行 Objective C 代码。如果您在 3D 视图中需要,则将眼睛检测结果返回给 Unity。

于 2013-05-19T05:25:30.783 回答