2017-07-10 3 views
0

私はビデオからすべてのフレームをつかむためのアプリを書いているので、私はいくつかのCV処理を行うことができます。 AndroidのAPIドキュメントの説明によると、MediaReaderの表面をImageReader.getSurface()として設定する必要があります。私はコールバックOnImageAvailableListener上のすべてのビデオフレームを取得することができます。それは実際にいくつかのデバイスといくつかのビデオで動作します。 しかし、私のNexus5(API24-25)ではImageAvailableのときにほとんど緑色のピクセルが表示されます。 私は画像のYuv平面のバイト[]をチェックしました。ビデオから読み込んだバイトが何か間違っていなければなりません!バイトの大部分はY = 0、UV = 0、緑のピクセルの ビデオがYUV420spであることを確認しました。誰か助けてもらえますか、フレームを取得する別の方法をお勧めしますか?(私はjavacvを試みましたがグラバーは遅すぎます)ビデオを読むときにImageReaderで間違ったデータを取得しましたか?

答えて

0

Imageを使用する場合は、getCropRectを使用してImageの有効な領域を取得する必要があります。 たとえば、1920 * 1080フレームをデコードするときにimage.width == 1088を取得すると、image.getCropImage()を使用して画像のサイズを取得する必要があります。画像のサイズは1920,1080になります。

関連する問題