首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从java视频中提取帧?

如何从java视频中提取帧?
EN

Stack Overflow用户
提问于 2016-08-15 22:50:23
回答 3查看 7.6K关注 0票数 0

我正在做一个项目,对视频进行分析,我想将视频分割成帧进行单独处理。我研究了几个开源库,包括Xuggler和FFMPEG,但它们都过时了,无法使用。有没有一种简单的方法可以从视频中提取帧并将其作为BufferedImage的集合进行处理

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-15 22:54:51

您可以使用OpenCV图像和视频处理免费开源框架。也有一个很好的Java包装器。

票数 0
EN

Stack Overflow用户

发布于 2016-08-23 14:22:01

遵循以下代码

代码语言:javascript
运行
复制
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FrameGrabber.Exception;

public class Read{
    public static void main(String []args) throws IOException, Exception
    {
        FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber("D:/video.mp4");
        frameGrabber.start();
        IplImage i;
        try {

            i = frameGrabber.grab();
            BufferedImage  bi = i.getBufferedImage();
            ImageIO.write(bi,"png", new File("D:/Img.png"));
            frameGrabber.stop();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }
}
票数 2
EN

Stack Overflow用户

发布于 2021-05-12 03:04:34

接下来,我离开@Rohit提出的代码,但更新到2021年

代码语言:javascript
运行
复制
package com.example;
 
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Java2DFrameConverter; 
public class Main { 
    public static void main(String []args) throws IOException, Exception
    {
        File myObj = new File("D:\\x\\x\\x\\x\\video.mp4");
        FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(myObj.getAbsoluteFile());
        frameGrabber.start(); 
        Frame f; 
        try {
            Java2DFrameConverter c = new Java2DFrameConverter(); 
            f = frameGrabber.grab();  
            BufferedImage bi = c.convert(f);
            ImageIO.write(bi,"png", new File("D:\\x\\x\\x\\x\\img.png"));
            frameGrabber.stop();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38957444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档