【问题标题】:Crash when converting cv::Mat to UIImage opencv 2.4将 cv::Mat 转换为 UIImage opencv 2.4 时崩溃
【发布时间】:2012-06-09 01:52:33
【问题描述】:

我正在尝试将 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 之前的图像),则不会发生崩溃,但会出现泄漏。

对可能出现的问题有什么想法吗?

【问题讨论】:

    标签: iphone objective-c ios opencv uiimage


    【解决方案1】:

    原来我已经过度释放 CGImageRef。

    【讨论】:

      猜你喜欢
      • 2012-12-29
      • 2017-12-24
      • 2017-07-12
      • 2018-04-16
      • 2011-06-28
      • 1970-01-01
      • 2016-08-16
      • 2022-06-13
      • 2018-12-26
      相关资源
      最近更新 更多