10

私はこれに対する答えを探していましたが、私が必要としているもののように見えるものもありますが、よくわかりません. この質問 #9152851 とこの質問 #2617625 を見つけて、たくさんのリンクを調べましたが、ここで何らかの方向性が必要です。

基本的に、OpenCV を使用して画像を処理するために非同期呼び出しをディスパッチしています。ここのコードを見ると、デリゲートに送り返す前に NSData * に変換していることがわかります。

NSData *proccessedData = [NSData dataWithBytes:processedImage.data length:(processedImage.rows * processedImage.cols)];        
[self.delegate onProcessedBitmapReady:proccessedData withFocusQuality:focusQuality];

しかし、デリゲートに戻ると、processedBitmap のタイプは (OS_dispatch_data *) で、バイトの値が含まれています。そのため、UIImage を設定しようとすると、null に設定されます。

- (void)onProcessedBitmapReady:(NSData *)processedBitmap withFocusQuality:(double)focusQuality
{
    //Use comverted image from self.captureCommand onComplete
    UIImage *image = [[UIImage alloc] initWithData:processedBitmap];
    [self saveImage:image];
}

値のスクリーン キャプチャを次に示します。

イムグル

では、これらのバイト (またはそれらが何であれ) を UIImage に詰め込むことができるものに変換するにはどうすればよいでしょうか?

よろしくお願いいたします。

-------------------------------------------------- -----新しい画像を追加する------------------------------------------

私のバイト

この新しい画像は役に立ちますか?

ありがとうございました。

4

1 に答える 1

11

NSData実際には、インターフェイスを提供するだけのクラス クラスターであり、その周囲には複数の特別な実装があります。OS_dispatch_dataブロックの周りにデータオブジェクトを渡すために作られた特別な実装のようです。特に、作成UIImageがクラッシュしないためです (非NSDataオブジェクトまたは単にガベージメモリを渡した場合のように)。代わりにUIImage、画像の形式を認識していないようです!

ところで、Apple には、クラス クラスタの概念に関する優れたガイドがあり、ここで見つけることができます。

于 2013-10-17T21:59:52.043 に答える