0

我已经使用 Sony CameraRemoteAPI SDK 连接了远程摄像机。相机已成功连接,我正在获取帧。以下代码获取传入的 UIImage 并分配给 UIImageView

- (void) liveviewPaint:(UIImage*)image { @synchronized(self) { [self.liveviewImageView setImage:image]; image = NULL; } }

然后我需要在这个 UIImage 中添加人脸识别。但是当我尝试这样做时,应用程序会耗尽内存并崩溃。如何使用这个远程摄像头有效地进行人脸识别?这是我当前的代码

- (void) liveviewPaint:(UIImage*)image { @synchronized(self) { [self performSelectorInBackground:@selector(getFaceDetectedImage:) withObject:image]; if ([[RecognitionAPI getSharedInstance] detectedImage]) { [self.liveviewImageView setImage:[[RecognitionAPI getSharedInstance] detectedImage]]; } else { [self.liveviewImageView setImage:image]; } image = NULL; } }

这里使用一个单独的线程调用人脸识别函数(getFaceDetectedImage)。一旦人脸被识别,它就会被设置为 RecognitionAPI 类(detectedImage)中的实例变量。如果检测到人脸,我将其设置为 UIImageView(liveviewImageView) 的图像,如下所示
[self.liveviewImageView setImage:[[RecognitionAPI getSharedInstance] detectedImage]];

这是没有人脸检测的分配工具的输出。应用程序这次没有崩溃。 在此处输入图像描述

这是人脸检测分配工具的输出。应用程序这次 崩溃了。在此处输入图像描述

我正在使用苹果内置的 CIDetector 进行人脸识别。我尝试使用opencv,但当时该应用程序也崩溃了。

这是我在控制台中遇到的错误

Recognition(483,0x6a51000) malloc: *** mach_vm_map(size=2691072) failed (error code=3) *** error: can't allocate region *** set a breakpoint in malloc_error_break to debug Recognition(483,0x6a51000) malloc: *** mach_vm_map(size=675840) failed (error code=3) *** error: can't allocate region *** set a breakpoint in malloc_error_break to debug Recognition(483,0x6a51000) malloc: *** mach_vm_map(size=2691072) failed (error code=3) *** error: can't allocate region *** set a breakpoint in malloc_error_break to debug Recognition(483,0x6a51000) malloc: *** mach_vm_map(size=675840) failed (error code=3) *** error: can't allocate region *** set a breakpoint in malloc_error_break to debug Recognition(483,0x6a51000) malloc: *** mach_vm_map(size=2691072) failed (error code=3) *** error: can't allocate region *** set a breakpoint in malloc_error_break to debug Recognition(483,0x6a51000) malloc: ***
此外,我总共有 59 个线程无法完成。这是它的截图。 在此处输入图像描述
我想知道如何避免这种崩溃以及如何有效地进行图像处理。我想我需要一个好的设计。任何人都可以帮忙吗?

4

0 回答 0