我正在尝试将UIImage转换为cv :: Mat然后返回到UIImage并将该UIImage插入到UIImageView中。
这是我用来转换的代码:
UIImage * imageFromMat(const cv::Mat& cvMat){
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,
cvMat.rows,
8,
8 * cvMat.elemSize(),
cvMat.step[0],
colorSpace,
kCGImageAlphaNone | kCGBitmapByteOrderDefault,
provider,
NULL,
false,
kCGRenderingIntentDefault);
UIImage *image = [[[UIImage alloc] initWithCGImage:imageRef] autorelease];
CGImageRelease(imageRef);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpace);
return image;
}
它转换得很好但是一旦我将它插入UIImageView,我就会崩溃,所以我假设问题就在那里。
我注意到如果我保留原始图像(转换为cv :: Mat之前的图像),则不会发生崩溃,但是我发现了泄漏。
对问题可能是什么的任何想法?
答案 0 :(得分:0)
原来我发布了CGImageRef。