从视频中检测面部并将其转换为gif

时间:2015-12-10 10:43:04

标签: android image artificial-intelligence

我正在研究可以从视频中检测人脸并将其转换为GIF格式的“人脸检测”主题,以便任何人都可以分享自己的表达。

我编写了方便的算法来实现这一目标。 让我解释一下它是如何工作的:

第1步:第一个视频会根据提供的fps将其转换为帧,这会将其转换为图片数量。

step2:现在我有框架形式的图像,他们有面孔和android面部检测api或任何其他的东西,如果你有建议我。它会检测图像中的面孔。

第3步:裁剪这些图像和脸只会坚持使用此图像。

第4步:获取这些有问题的文件并将其转换为GIF文件。

所以step4正是我的问题是:我们如何将这些歪曲的图像转换为gif formate。

我很感激你能给我的任何信息

1 个答案:

答案 0 :(得分:1)

对于步骤4,请参阅此解决方案。

https://github.com/nbadal/android-gif-encoder

这是这篇文章的Android版本。

http://www.jappit.com/blog/2008/12/04/j2me-animated-gif-encoder/

要使用此类,这是一个生成GIF字节数组的示例辅助方法。请注意,getBitmapArray()函数是一种立即返回图像适配器中所有Bitmap文件的方法。因此输入是一个适配器中的所有Bitmap文件,输出是一个字节数组,您可以写入该文件。

public byte[] generateGIF() {
    ArrayList<Bitmap> bitmaps = adapter.getBitmapArray();
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    AnimatedGifEncoder encoder = new AnimatedGifEncoder();
    encoder.start(bos);
    for (Bitmap bitmap : bitmaps) {
        encoder.addFrame(bitmap);
    }
    encoder.finish();
    return bos.toByteArray();
}

要使用此功能,请执行以下操作,然后将文件保存到SD卡中。

FileOutputStream outStream = null;
        try{
            outStream = new FileOutputStream("/sdcard/generate_gif/test.gif");
            outStream.write(generateGIF());
            outStream.close();
        }catch(Exception e){
            e.printStackTrace();
        }

(归功于生活者)