私はopencvを初めて使用します。私はそれを私のiosプロジェクトに統合しています。私のプロジェクトでは、UIImageからIplImageに、またはその逆に変換しています。また、openCVライブラリを使用してさまざまな画像フィルターを適用しています。
アプリのリークをテストしています。メモリモニターを使用して実行していますが、opencvの関数セットを実行するたびに、アプリが約1メガバイトずつ大きくなることに気付きました。新しいiplimageを割り当てるたびに、後で次のように呼び出してリリースします。
cvReleaseImage(&iplimage);
シミュレーターを使用して、メモリ不足の警告を強制し、イメージメモリを解放しています。アプリのメモリサイズには影響しないようです。
cvReleaseImageが実際にメモリを解放するのはいつですか?私は漏れていますか?
ARCをオンにしてiOS5.1を使用しています。
編集:
これは、UIImageをiplImageに変換するために使用しているコードです(私が見つけたコピーペースト)
- (UIImage *)UIImageFromIplImage:(IplImage *)image {
NSLog(@"IplImage (%d, %d) %d bits by %d channels, %d bytes/row %s", image->width, image->height, image->depth, image->nChannels, image->widthStep, image->channelSeq);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
NSData *data = [NSData dataWithBytes:image->imageData length:image->imageSize];
CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);
CGImageRef imageRef = CGImageCreate(image->width, image->height,
image->depth, image->depth * image->nChannels, image->widthStep,
colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaLast ,
provider, NULL, false, kCGRenderingIntentDefault);
UIImage *ret = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpace);
return ret;
}