我正在研究“人脸检测”主题,它可以从视频中检测人脸并将其转换为 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/