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

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

import org.bytedeco.javacv.FFmpegFrameGrabber;

import org.bytedeco.javacv.Frame;

import org.bytedeco.javacv.Java2DFrameConverter;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import static org.bytedeco.javacpp.opencv_core.IplImage;

import static org.bytedeco.javacpp.opencv_core.cvReleaseImage;

import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;

import static org.bytedeco.javacpp.opencv_imgcodecs.cvSaveImage;

import static org.bytedeco.javacpp.opencv_imgproc.cvSmooth;

public class JavaCV {

// the image's path;

final static String imagePath = "/home/lance/abc.jpg/";

// the vedio's path and filename;

final static String vedioPath = "/home/lance/target-a/";

final static String vedioName = "origin-a.mp4";

public static void main(String[] args) throws Exception {

smooth(imagePath);

grabberFFmpegImage(vedioPath + vedioName, vedioPath

, vedioName, 30);

}

// the method of compress image;

public static void smooth(String fileName) {

IplImage iplImage = cvLoadImage(fileName);

if (iplImage != null) {

cvSmooth(iplImage, iplImage);

cvSaveImage(fileName, iplImage);

cvReleaseImage(iplImage);

}

}

// grab ffmpegImage from vedio;

public static void grabberFFmpegImage(String filePath, String fileTargetPath

, String fileTargetName, int grabSize) throws Exception{

FFmpegFrameGrabber ff = FFmpegFrameGrabber.createDefault(filePath);

ff.start();

for (int i = 0; i < grabSize; i++){

Frame frame = ff.grabImage();

doExecuteFrame(frame, filePath, fileTargetName, i);

}

ff.stop();

}

// grab frame from vedio;

public static void doExecuteFrame(Frame frame, String targetFilePath, String targetFileName, int index) {

if ( frame == null || frame.image == null) {

return;

}

Java2DFrameConverter converter = new Java2DFrameConverter();

String imageMat = "jpg";

String fileName = targetFilePath + File.pathSeparator + targetFileName + "_" + index + "." + imageMat;

BufferedImage bi = converter.getBufferedImage(frame);

File output = new File(fileName);

try{

ImageIO.write(bi, imageMat, output);

} catch (IOException e) {

e.printStackTrace();

}

}

}

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

视频关键帧提取 java_JavaCV实现将视频以帧方式抽取相关推荐

  1. python实现视频关键帧提取(基于帧间差分)

    python实现视频关键帧提取(基于帧间差分) 在很多场景下,我们不想或者不能处理视频的每一帧图片,这时我们希望能够从视频中提取出一些重要的帧进行处理,这个过程我们称为视频关键帧提取. 关键帧提取算法 ...

  2. python视频提取关键帧_一种视频关键帧提取算法的制作方法

    本发明属于信息安全技术领域,涉及视频内容信息的提取,具体来说,是一种视频关键帧提取算法. 背景技术: 随着Internet的应用和普及,多媒体信息检索系统对社会各领域产生越来越大的影响.传统的信息检索 ...

  3. Java中grabImage_JavaCV实现将视频以帧方式抽取

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

  4. python视频帧提取并保存_如何用python实现视频关键帧提取并保存为图片?

    展开全部 import cv2 vc = cv2.VideoCapture('Test.avi') #读入视频文件2113 c=1 if vc.isOpened(): #判断是否正常打开5261 rv ...

  5. 视频镜头分割与关键帧提取

    Project Introduction 1 选题 2 工作简介 3 开发环境 Technical Detailss 1 理论知识 边缘检测 关键帧提取 2 具体算法 镜头边缘检测 计算帧与帧之间的差 ...

  6. 视频提取关键帧工具类KeyFramesExtractUtils.py,动态支持三种取帧方式,关键参数可配置,代码经过优化处理,效果和性能更好。

    同步上一期视频关键帧提取方法: 视频提取关键帧的三种方式[已调通]_君临天下tjm的博客-CSDN博客_视频关键帧提取关键代码如下:# -*- coding: utf-8 -*-"" ...

  7. 使用ffmeg提取视频关键帧

    一. 什么是关键帧 参考维基百科Key frame的解释: 关键帧,是指动画中一个绘图,定义任何的起点和终点平滑过渡.一系列关键帧定义了观看者将看到的运动,而关键帧在电影,视频或动画上的位置定义了运动 ...

  8. Python+Opencv2(三)保存视频关键帧

    文章目录 一.前言 二.视频中保存每帧图片 三.帧间差法 1.两间查分法 (1)处理一段视频 (2)批量处理视频 (3)扩展 2.三间差分法 一.前言 依然是博主毕设的手语检测,好多图片要处理哦! 今 ...

  9. 超简单的视频对象提取程序

    视频对象提取 与其说是视频对象提取,不如说是视频颜色提取,因为其本质还是使用了OpenCV的HSV颜色物体检测. HSV介绍 HSV分别代表,色调(H:hue),饱和度(S:saturation),亮 ...

最新文章

  1. Python中使用中文正则表达式匹配指定的中文字符串
  2. oracle统计事务,统计Oracle 查询事务数的方法
  3. 【NLP】一行Python代码中自动化文本处理
  4. STM32 之七 备份域(备份寄存器、备份SRAM)详解及数据丢失问题处理
  5. 《口袋奇兵》开发商引入阿里云PolarDB数据库 IT成本降幅达50%
  6. x86汇编-1(第三章—第四章)虚拟硬盘基本信息,虚拟硬盘的写入,bochs调试
  7. h5引入json_Vue中如何使用本地Json文件?
  8. python 并发编程 多线程 目录
  9. qml入门学习(八):通过loader对象动态加载和移除组件
  10. [转]SOAP 教程
  11. 如何使用PDF转换器将PDF转换成图片
  12. 添加rviz插件解决gaol3dtool插件缺失问题
  13. 怎么录制电脑桌面视频 具体的操作方法
  14. Python爬虫实战 | (13) 爬取新浪滚动新闻
  15. c语言编程一张纸对折,【动手试试】把一张纸对折
  16. 大学学python用记笔记吗_python笔记(1)-关于我们应不应该继续学习
  17. phase-portrait相轨迹
  18. CF #683 div.2
  19. javascript中Doom操作方法总结
  20. 新年签通用php,《转帖》个人制作 猎人TMW字符串 三系整合通用 新年快乐帖

热门文章

  1. 十个效果酷炫的Linux系统操作指令(像黑客帝国般的效果~)
  2. 定义一个DSL风格的LifecycleObserver(Kotlin)
  3. DXF 最简单的一个文件生成两个直线一条直线放入BLOCKS中通过INSERT插入 (2)
  4. 苹果应用上架审核规则介绍
  5. Civil 3D 二次开发 创建AutoCAD对象—— 00 ——
  6. CoCreateInstance(转)
  7. RedHat9.0下载地址
  8. [转载]实现Application Tile 更新
  9. linux shell bash 内置变量参考
  10. Python制作当年第一款手机游戏-贪吃蛇游戏(练习)