JavaCV实现将视频以帧方式抽取

  

使用前:在用JavaCV实现以帧方式抽取视频的前,我们需要先从bytedeco/JavaCV下载第三方的压缩包,解压后按自己的需求往自己的IDE(*想法/Eclipse *)导入解压缩包下JAR文件;

  

接下来就以代码方式来说明如何利用Javacv来将视频以帧的方式抽取出来:

        进口org.bytedeco.javacv.FFmpegFrameGrabber;   进口org.bytedeco.javacv.Frame;   进口org.bytedeco.javacv.Java2DFrameConverter;      进口javax.imageio.ImageIO;   进口java.awt.image.BufferedImage;   进口java.io.File;   进口java.io.IOException;      进口静态org.bytedeco.javacpp.opencv_core.IplImage;   进口静态org.bytedeco.javacpp.opencv_core.cvReleaseImage;   进口静态org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;   进口静态org.bytedeco.javacpp.opencv_imgcodecs.cvSaveImage;   进口静态org.bytedeco.javacpp.opencv_imgproc.cvSmooth;      公开课JavaCV {//图像的路径;   最终的静态字符串imagePath=?home/枪/abc.jpg/?//视频的路径和文件名;   最终的静态字符串vedioPath=?home/枪/要好办/?   最终的静态字符串vedioName=" origin-a.mp4”;         公共静态void main (String [] args){抛出异常   光滑(imagePath);   grabberFFmpegImage (vedioPath + vedioName vedioPath   vedioName 30);   }//压缩图像的方法;   公共静态空间平滑(字符串文件名){   IplImage IplImage=cvLoadImage(文件名);   如果(iplImage !=null) {   cvSmooth (iplImage iplImage);   cvSaveImage(文件名,iplImage);   cvReleaseImage (iplImage);   }   }//获取ffmpegImage视频;   公共静态孔隙grabberFFmpegImage (fileTargetPath filePath的字符串,字符串   、字符串fileTargetName int grabSize)抛出异常{   FFmpegFrameGrabber ff=FFmpegFrameGrabber.createDefault (filePath);   ff.start ();   for (int i=0;我& lt;grabSize;我+ +){   框架框架=ff.grabImage ();   doExecuteFrame(框架、filePath fileTargetName,我);   }   ff.stop ();   }//获取从视频帧;   公共静态孔隙doExecuteFrame (targetFileName targetFilePath框架框架,字符串,字符串,整数指数){   如果(?=null | |框架。形象==null) {   返回;   }   Java2DFrameConverter转换器=new Java2DFrameConverter ();   字符串imageMat=癹pg”;   字符串文件名=targetFilePath +文件。pathSeparator + targetFileName +“_”+指数+“。”+ imageMat;   BufferedImage bi=converter.getBufferedImage(框架);   文件输出=新文件(文件名);   尝试{   ImageIO。写(bi、imageMat、输出);   }捕捉(IOException e) {   e.printStackTrace ();   }   }   }      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

JavaCV实现将视频以帧方式抽取