UIImage imageWithData返回nil

时间:2013-04-29 07:40:23

标签: ios objective-c opencv uiimage

我正在使用最新的SDK开发iOS 5.0+应用程序。

在我的应用程序上,我有一些C ++图像识别软件,我正在尝试保存这个C ++函数识别的图像。

我有这个数组来存储识别的图像:

int _detectedImages[NSMaxNumDetections ][NSPatchSize * NSPatchSize];

我用这种方式调用C ++函数:

numberOfDetections = nativeDetect(_resultImages);

使用以下代码,我尝试将数据从_detectedImages转换为UIImage

for (int index = 0; index < numberOfDetections; index++)
{
    if (_resultImages[index] != nil)
    {
        NSData* imageData = [NSData dataWithBytes:&_resultImages[index] length:sizeof(_resultImages[index])];
        NSLog(@"##### Image data size: %d", [imageData length]);
        UIImage* newImage = [UIImage imageWithData:imageData];
        _lastDetectedSignImages[index] = newImage;
    }
}

在日志上我得到了这个:

#### Image data size: 2304
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM setObject:atIndex:]: object cannot be nil'
*** First throw call stack:

newImage为零,但imageData有数据。

当我尝试从该数据中获取UIImage时,我做错了吗?

另一种可能性,如果我的C ++识别软件做错了什么,但我不会在这里向你展示那些代码(对不起,它受版权保护)。

或者我没有正确地将_resultImages传递给nativeDetect

1 个答案:

答案 0 :(得分:1)

几乎可以肯定你的C ++图像是某种位图格式--RGBA等。所以你的第一个任务是找出那种格式(以及字节顺序!)。使用该信息,您可以使用CGImageCreate()来创建CGImageRef。有了它,你可以创建一个UIImage。