簡體   English   中英

將cv :: Mat轉換為UIImage opencv 2.4時崩潰

[英]Crash when converting cv::Mat to UIImage opencv 2.4

我正在嘗試將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之前的圖像),則不會發生崩潰,但會泄漏。

您對問題可能有什么想法?

原來我已經發布了CGImageRef。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM