视频关键帧提取 java_JavaCV实现将视频以帧方式抽取
使用前: 在用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实现将视频以帧方式抽取相关推荐
- python实现视频关键帧提取(基于帧间差分)
python实现视频关键帧提取(基于帧间差分) 在很多场景下,我们不想或者不能处理视频的每一帧图片,这时我们希望能够从视频中提取出一些重要的帧进行处理,这个过程我们称为视频关键帧提取. 关键帧提取算法 ...
- python视频提取关键帧_一种视频关键帧提取算法的制作方法
本发明属于信息安全技术领域,涉及视频内容信息的提取,具体来说,是一种视频关键帧提取算法. 背景技术: 随着Internet的应用和普及,多媒体信息检索系统对社会各领域产生越来越大的影响.传统的信息检索 ...
- Java中grabImage_JavaCV实现将视频以帧方式抽取
使用前: 在用JavaCV实现以帧方式抽取视频的前,我们需要先从bytedeco/javacv下载第三方的压缩包,解压后按自己的需求往自己的IDE ( * IDEA / Eclipse * ) 导入解 ...
- python视频帧提取并保存_如何用python实现视频关键帧提取并保存为图片?
展开全部 import cv2 vc = cv2.VideoCapture('Test.avi') #读入视频文件2113 c=1 if vc.isOpened(): #判断是否正常打开5261 rv ...
- 视频镜头分割与关键帧提取
Project Introduction 1 选题 2 工作简介 3 开发环境 Technical Detailss 1 理论知识 边缘检测 关键帧提取 2 具体算法 镜头边缘检测 计算帧与帧之间的差 ...
- 视频提取关键帧工具类KeyFramesExtractUtils.py,动态支持三种取帧方式,关键参数可配置,代码经过优化处理,效果和性能更好。
同步上一期视频关键帧提取方法: 视频提取关键帧的三种方式[已调通]_君临天下tjm的博客-CSDN博客_视频关键帧提取关键代码如下:# -*- coding: utf-8 -*-"" ...
- 使用ffmeg提取视频关键帧
一. 什么是关键帧 参考维基百科Key frame的解释: 关键帧,是指动画中一个绘图,定义任何的起点和终点平滑过渡.一系列关键帧定义了观看者将看到的运动,而关键帧在电影,视频或动画上的位置定义了运动 ...
- Python+Opencv2(三)保存视频关键帧
文章目录 一.前言 二.视频中保存每帧图片 三.帧间差法 1.两间查分法 (1)处理一段视频 (2)批量处理视频 (3)扩展 2.三间差分法 一.前言 依然是博主毕设的手语检测,好多图片要处理哦! 今 ...
- 超简单的视频对象提取程序
视频对象提取 与其说是视频对象提取,不如说是视频颜色提取,因为其本质还是使用了OpenCV的HSV颜色物体检测. HSV介绍 HSV分别代表,色调(H:hue),饱和度(S:saturation),亮 ...
最新文章
- keyshot卡住了还能保存吗_倒入醒酒器的红酒一次没喝完,还能倒回酒瓶保存吗?...
- iOS游戏框架Sprite Kit基础教程——Swift版上册
- wfs.js windows用法
- 20本重磅图书等你认领:前沿、创业、个人成长全有了
- 算法:线性时间选择_机器学习必修课!scikit-learn 支持向量机算法库使用小结
- java输入某年某个季度_Java获取某年某季度的第一天出错
- 计算机二级考试c语言公共知识,2016年电大最新计算机二级考试c语言公共基础题知识点.doc...
- 基于Metronic的Bootstrap开发框架经验总结(15)-- 更新使用Metronic 4.75版本
- postgres的序列(Sequence)的使用
- Java 求一段代码运行所需要的时间——模板方法设计模式
- Java基础知识强化之集合框架笔记15:List集合的特点
- 家用智能门锁常见的开锁方式
- 第一章 SDN介绍 (附件1 )【华为SDN产业链分析】
- 张一鸣宣布卸任字节跳动CEO,联合创始人梁汝波将接任
- LaTeX数学表达式
- 从零开始玩转Franka Panda机器人
- RTL8703/RTL8723/RTL8761/RTL8821/RTL8822系列蓝牙定频测试说明
- 0460-HDFS纠删码的机架感知
- 什么是HashMap?
- 高数习题第七章总练习题(上)
热门文章
- Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?
- 这个北航妹子也太卷了...
- 计算机视觉模型效果不佳,你可能是被相机的Exif信息坑了
- 【实战】OpenCV钢管计数分析与方法比较
- Java-001-面向对象
- 《VMware Virtual SAN权威指南》一2.2 VSAN的要求
- CoreAnimation —— CATransaction(隐式动画)
- 带权重的随机输出数组中的元素
- vs 中大括号之间垂直虚线显示
- Nagios+mutt+msmtp 无法发送邮件的问题!