iPhone で自分の OpenCV アプリの割り当てを確認したところ、カメラからの写真は約 300kb、アプリによって変換された写真は 6 MB (20 倍) かかることがわかりました。
変じゃない?UIImage を cvMat から変換するために使用している関数を見てください。
+ (UIImage *)UIImageFromCVMat:(const cv::Mat&)cvMat withOrientation:(UIImageOrientation) orientation{
NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize() * cvMat.total()];
CGColorSpaceRef colorSpace;
if (cvMat.elemSize() == 1) {
colorSpace = CGColorSpaceCreateDeviceGray();
} else {
colorSpace = CGColorSpaceCreateDeviceRGB();
}
CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);
CGImageRef imageRef = CGImageCreate(cvMat.cols, // Width
cvMat.rows, // Height
8, // Bits per component - ok
8 * cvMat.elemSize(), // Bits per pixel - ok
cvMat.step[0], // Bytes per row - ok
colorSpace, // Colorspace - ok
kCGImageAlphaNone | kCGBitmapByteOrderDefault, // Bitmap info flags
provider, // CGDataProviderRef
NULL, // Decode
false, // Should interpolate
kCGRenderingIntentDefault); // Intent
UIImage *image = [[UIImage alloc] initWithCGImage:imageRef scale:1.0 orientation:orientation];
CGImageRelease(imageRef);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpace);
return image;
}
生成された画像が非常に大きい理由がわかりません=/
何か案は?
乾杯、