2016-03-20 14 views
2

LibyuvライブラリからメソッドI420ToARGBを呼び出して、YUV_420 _888でエンコードされたAndroid camera2プレビューフレームを処理していますが、Libyuvを使用してYUV_420 _888をARGBに変換します

libyuv::I420ToARGB(
    ysrc, //const uint8* src_y, 
    ystride, //int src_stride_y, 
    usrc, //const uint8* src_u, 
    ustride, ///int src_stride_u, 
    vsrc, //const uint8* src_v, 
    vstride, //int src_stride_v, 
    argb, //uint8* dst_argb, 
    w*4, //int dst_stride_argb, 
    w, //int width, 
    h //int height 
); 

答えて

1

赤のオブジェクトは青く見えると、その逆の場合は、後方UおよびVカラープレーンを持っています。 Androidの開発者ドキュメントごとに、平面は次のとおり

http://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888

画像#1 getPlanes()によって返された配列内の面の順序は 平面#0は常にY、平面#1であるように保証され常にU(Cb)、 であり、プレーン#2は常にV(Cr)である。

また、このlibyuvメソッドは、ピクセルストライドをサポートしていないと思われます。このストライドは、YUY_420_888イメージでは1より大きい場合があります。その場合、プレーンを連続して処理する必要があります。または、ピクセルストライドが1より大きい場合、libyuvから半平面420を受け取るメソッドを使用する必要があります。

関連する問題