带视频流的Android视觉人脸检测
我正在尝试将脸部检测API集成到我从鹦鹉bebop无人机接收的视频流中。
该流使用MediaCodec类进行解码(http://developer.android.com/reference/android/media/MediaCodec.html),并且工作正常。 我可以用解码器解码的帧数据成功访问ByteBuffer,而不是将解码的帧数据渲染到表面视图。
我也可以从解码器访问解码图像对象(类https://developer.android.com/reference/android/media/Image.html),它们有一个时间戳,我可以得到以下信息:
我试图做的第一件事是通过Framebuilder(android / gms / vision / Frame.Builder)为视觉api(com / google / android / gms / vision / Frame)生成Frame对象。
...
ByteBuffer decodedOutputByteBufferFrame = mediaCodec.getOutputBuffer(outIndex);
Image image = mediaCodec.getOutputImage(outIndex);
...
decodedOutputByteBufferFrame.position(bufferInfo.offset);
decodedOutputByteBufferFrame.limit(bufferInfo.offset+bufferInfo.size);
frameBuilder.setImageData(decodedOutputByteBufferFrame, 640, 368,ImageFormat.YV12);
frameBuilder.setTimestampMillis(image.getTimestamp());
Frame googleVisFrame = frameBuilder.build();
此代码不会给我任何错误,并且googleVisFrame对象不为空,但当我调用googleVis.getBitmap()
,我会得到null
。 随后,Facedetection不起作用(我想因为我的视觉框架对象存在问题...)
即使这可行,但我不确定如何使用vision API来处理视频流,因为我发现所有代码都演示了内置相机的使用。
如果你能指出我正确的方向,我会非常感谢。
链接地址: http://www.djcxy.com/p/92539.html