我正在使用最新的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
。
答案 0 :(得分:1)
几乎可以肯定你的C ++图像是某种位图格式--RGBA等。所以你的第一个任务是找出那种格式(以及字节顺序!)。使用该信息,您可以使用CGImageCreate()来创建CGImageRef。有了它,你可以创建一个UIImage。