0

Accelerate フレームワークで vImage バッファを使用してヒストグラム計算を行い、カメラ画像を CVpixelbuffer から変換された UIimage として提供します。アルゴリズムはエラーなく動作しますが、画面上のカメラ画像データの処理は非常に遅くなります。タスクが完了したときにバッファを解放することについて、Apple のドキュメントでいくつかの情報を読みました。バッファ データを取得した後、2 行のコードを記述しました。しかし、何も変わりません。バッファ データが解放された後の添付のスクリーンショットを参照してください。SourceBuffer と histogramSourceBuffer は解放されていないようです。デバッガーで空きバッファーをどのように表示する必要があるかはわかりませんが、高さ、幅、およびデータ情報が表示されます。バッファを解放する方法と、それを確実に解放する方法を教えてください。本当にありがとう

  if let finalImage =  try? sourceBuffer.createCGImage(format: format) {
            sourceBuffer.free()
            histogramSourceBuffer.free()
            return UIImage(cgImage: finalImage)

ここに画像の説明を入力

4

1 に答える 1

1

メモリを解放するには、vImage_Buffer.data ポインターで free() を呼び出す必要があります。構造体自体は別の割り当てです。

ヒストグラム自体は、vImagePixelCounts の配列へのポインターの配列です。これは、vImagePixelCounts の配列をどのように割り当てたかに従って解放する必要があります。vImage はその部分に関与していないため、あなたとあなたの間の問題です。

于 2020-07-16T00:58:57.430 に答える