我正在尝试制作一个应用程序来处理一组帧,这些帧jpg
使用 Google-vision API 存储到应用程序中。
管道很简单。
1)我用一些选项创建检测器:
_options = @{
GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll),
GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll),
GMVDetectorFaceTrackingEnabled : @(NO)
};
_faceDetector = [GMVDetector detectorOfType:GMVDetectorTypeFace options:_options];
2)我用这种方法读取了一个框架:
UIImage *image = [UIImage imageWithContentsOfFile:imFile];
imFile 中包含的路径是正确的,我可以看到图像表示
3)最后,我处理框架:
NSArray<GMVFaceFeature *> *faces = [_faceDetector featuresInImage:image options:nil];
使用这段代码我可以处理一些帧,但是当分析很多帧时,应用程序的内存使用量不断增加,应用程序被自动终止。
我试图跟踪内存泄漏,但据我跟踪,它来自最后一部分内部,在[detector featuresInImage...]
是我做错了什么,还是里面有内存泄漏?我试图从谷歌找到任何问题,但无法找到它。
编辑:
这是我对检测器的每个结果所做的事情:
if ([faces count]>0){
GMVFaceFeature *face = [faces objectAtIndex:0];
NSFileHandle *myHandle = [NSFileHandle fileHandleForWritingAtPath:filename];
[myHandle seekToEndOfFile];
NSString* lineToWrite = [NSString stringWithFormat:@"%u",fNumber];
lineToWrite = [lineToWrite stringByAppendingString:[NSString stringWithFormat:@",%f",face.smilingProbability]];
lineToWrite = [lineToWrite stringByAppendingString:@"\n"];
NSError *errorWrite;
[myHandle writeData:[lineToWrite dataUsingEncoding:NSUTF8StringEncoding]];
if(errorWrite){
NSLog(@"%@",errorWrite);
}
}
该方法到此结束。所以基本上我所做的就是创建一个文件并在其中写入。