0

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

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

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

int _detectedImages[NSMaxNumDetections ][NSPatchSize * NSPatchSize];

我这样调用 C++ 函数:

numberOfDetections = nativeDetect(_resultImages);

并使用以下代码,我尝试将数据_detectedImagesUIImage.

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为 nil 但imageData有数据。

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

另一种可能性是我的 C++ 识别软件做错了什么,但我不会在这里向您展示该代码(抱歉,它受版权保护)。

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

4

1 回答 1

1

几乎可以肯定您的 C++ 图像是某种位图格式 - RGBA 等。所以您的首要任务是弄清楚该格式是什么(以及字节顺序!)。有了这些信息,您可以使用 CGImageCreate() 创建 CGImageRef。有了它,您可以创建一个 UIImage。

于 2013-04-29T12:42:20.717 回答