我正在尝试使一个应用程序处理一组框架,并使用Google视觉API以jpg
的形式存储到应用程序中。
管道很简单。
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...]
是我做错了什么,还是内部有内存泄漏?我试图从Google找到任何问题,但找不到。
编辑:
这是我对检测器的每个结果的处理方式:
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);
}
}
方法到此结束。所以基本上我要做的是创建文件并写入文件。