ios - UIImage imageWithData 返回 nil

标签 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

最佳答案

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

关于ios - UIImage imageWithData 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273511/

相关文章:

ios - 沙盒 : Is possible to simulate a failed or interrupted In App Purchase?

objective-c - iPhone 硬件和用户计时器随着时间的推移变得不同步

ios - JusPayExpress 结帐错误 - JSURLNotPassed (102)

ios - 带界面生成器的 UICollectionViewCell

ios - 移动一个框架的父大小的一半将它一直移动(坐标加倍)?

image - 如何使图像呈现出陈旧、布满灰尘、颜色褪色的外观?

ios - SKEmitterNode 如何在不同背景下使用混合模式 "add"保持相同效果

objective-c - 我的框架将利用其他框架,但我希望这对最终用户是透明的

android - Gradle 找不到用于使用 NDK 进行调试的 OpenCV 库

c# - 一次捕获后图像捕获失败