android - 从视频中检测人脸并将其转换为 gif

标签 android image artificial-intelligence

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

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

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

第 2 步: 现在我有了图像形式的框架,它们有面部和 android 面部检测 api 或任何其他东西,如果你有请建议我。它将从图像中检测面部。

第 3 步:裁剪这些图像,人脸只贴在这幅图像上。

第 4 步:获取裁剪后的文件并将其转换为 GIF 文件。

所以第 4 步正是我的问题:我们如何将这些裁剪后的图像转换为 gif 格式。

如果你能给我任何信息,我将不胜感激

最佳答案

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

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

这是这篇文章的 Android 版本。

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

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

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();
        }

(归功于 lifelogger)

关于android - 从视频中检测人脸并将其转换为 gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34199799/

相关文章:

android - 为什么没有调用微调器中的 onNothingSelected?

android - Mac OS X 版本 10.10.5 (14F27) 上的 "Genymotion quit unexpectedly"

html - 叠加层未正确调整 CSS 大小

machine-learning - 机器学习中的动量是什么?

python - 使用 python 和 NLP 的单词和文本关系

android - 如何在android中解析不区分大小写的查询搜索?

android - 我的 Recyclerview 在 NestedScrollview 里面,它正在工作,但滚动不流畅

image - 在处理过程中调整任何屏幕尺寸的硬值

javascript - 上传前检查文件类型

java - 我对 Connect Four 的评估函数和 Alpha-beta 修剪的实现不够智能