视频关键帧提取 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),亮 ...
最新文章
- Python中使用中文正则表达式匹配指定的中文字符串
- oracle统计事务,统计Oracle 查询事务数的方法
- 【NLP】一行Python代码中自动化文本处理
- STM32 之七 备份域(备份寄存器、备份SRAM)详解及数据丢失问题处理
- 《口袋奇兵》开发商引入阿里云PolarDB数据库 IT成本降幅达50%
- x86汇编-1(第三章—第四章)虚拟硬盘基本信息,虚拟硬盘的写入,bochs调试
- h5引入json_Vue中如何使用本地Json文件?
- python 并发编程 多线程 目录
- qml入门学习(八):通过loader对象动态加载和移除组件
- [转]SOAP 教程
- 如何使用PDF转换器将PDF转换成图片
- 添加rviz插件解决gaol3dtool插件缺失问题
- 怎么录制电脑桌面视频 具体的操作方法
- Python爬虫实战 | (13) 爬取新浪滚动新闻
- c语言编程一张纸对折,【动手试试】把一张纸对折
- 大学学python用记笔记吗_python笔记(1)-关于我们应不应该继续学习
- phase-portrait相轨迹
- CF #683 div.2
- javascript中Doom操作方法总结
- 新年签通用php,《转帖》个人制作 猎人TMW字符串 三系整合通用 新年快乐帖
热门文章
- 十个效果酷炫的Linux系统操作指令(像黑客帝国般的效果~)
- 定义一个DSL风格的LifecycleObserver(Kotlin)
- DXF 最简单的一个文件生成两个直线一条直线放入BLOCKS中通过INSERT插入 (2)
- 苹果应用上架审核规则介绍
- Civil 3D 二次开发 创建AutoCAD对象—— 00 ——
- CoCreateInstance(转)
- RedHat9.0下载地址
- [转载]实现Application Tile 更新
- linux shell bash 内置变量参考
- Python制作当年第一款手机游戏-贪吃蛇游戏(练习)