0

最新の 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:

newImagenil ですが、imageDataデータがあります。

UIImageそのデータからを取得しようとすると、何か問題がありますか?

もう 1 つの可能性は、私の C++ 認識ソフトウェアが何か問題を起こしている場合ですが、ここではそのコードを表示しません (申し訳ありませんが、著作権で保護されています)。

_resultImagesまたは、に正しく渡していませんnativeDetect

4

1 に答える 1

1

ほとんどの場合、C++ 画像はビットマップ形式 (RGBA など) になっています。したがって、最初のタスクは、その形式が何であるか (およびバイト オーダーも!) を把握することです。その情報を使用して、CGImageCreate() を使用して CGImageRef を作成できます。これで、UIImage を作成できます。

于 2013-04-29T12:42:20.717 に答える