ビデオを処理し、そこからいくつかの画像を返す関数があります。
必要なフレームを含む関数内に新しいビデオを作成し、ビデオを返すことでそうしています。これは、ビデオを再度読み取って処理する次の関数です。
それを行うより速い方法はありますか?たとえば、画像を含む配列を返し、それらを読み取るには?
ビデオを処理し、そこからいくつかの画像を返す関数があります。
必要なフレームを含む関数内に新しいビデオを作成し、ビデオを返すことでそうしています。これは、ビデオを再度読み取って処理する次の関数です。
それを行うより速い方法はありますか?たとえば、画像を含む配列を返し、それらを読み取るには?
デコードされたフレームを 3 次元配列として渡すことができます。たとえば、2 つの 2-D フレームframe1
とframe2
がある場合、次のように 3 次元に沿ってそれらを連結できます。
M = cat(3, frame1, frame2);
3 次元配列からフレームを抽出するには、3 番目の座標を指定するだけです。たとえば、 を取得するにはframe1
、次のように記述します。
frame1 = M(:, :, 1);
これにより、関数呼び出し間のフレームのエンコードとデコードの問題を回避し、連続したエンコードによるビデオ品質の低下を防ぐことができます。