2017-07-05 77 views
0

ARKitは60フレーム/秒で動作し、フレームあたり16.6msに相当します。 CV ::マット(のYCrCb)にCVPixelBufferRef(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange形式)に変換するARFrame.capturedImage CVPixelBufferRefのOpenCv Matへのリアルタイム変換

私の現在のコードはARKitが停止する原因となり、すべてが遅れるためにどの、30msの中で実行されます。

誰かがより速いコンバージョンを達成する方法やフレームレートを落とす必要がありますか?

suggestion by Apple to use Metalがありますが、その方法はわかりません。

また、私はちょうど< 1msで動作する最初のチャンネルであるグレースケールプレーンを取ることができますが、理想的には色情報も必要です。

答えて

3

メタルを使用してピクセルバッファ内のイメージを処理するには、次の操作が必要です。

  1. ピクセルバッファの上にCVMetalTextureオブジェクトを作成するには、CVMetalTextureCacheCreateTextureFromImageを呼び出します。
  2. CVMetalTextureGetTextureを呼び出すと、メタルコード(GPU)が読み書きできるMTLTextureオブジェクトが作成されます。
  3. 色のフォーマットを変換するためのメタルコードを書きます。

私は、Metalを使ってピクセルバッファ(ARKitではなくカメラから)を処理するオープンソースプロジェクト(https://github.com/snakajima/vs-metal)を持っています。このプロジェクトのコードを自由にコピーしてください。

関連する問題