【EMGU】读取视频AVI文件+保存任意帧为图片
文章简介:对拍取的视频需要手动截取或者分帧截取图片,本文拟实现此功能。可多次、任意帧截取。
操作说明:空格键开始截取,回车键退出视频。
开发环境:EMGU2.4.9 + VS2010 +Win7(64)。
public void VideoCatch(string filepath){try{IntPtr CatchFrame =CvInvoke.cvCreateFileCapture(filepath);CvInvoke.cvNamedWindow("打开视频");// 得到总帧数CvInvoke.cvGetCaptureProperty(CatchFrame, Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_COUNT);// 视频宽度int wd = (int)CvInvoke.cvGetCaptureProperty(CatchFrame, Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH);// 视频高度int hg = (int) CvInvoke.cvGetCaptureProperty(CatchFrame, Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT);// 当前帧位置CvInvoke.cvGetCaptureProperty(CatchFrame, Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_POS_FRAMES);// 帧频CvInvoke.cvGetCaptureProperty(CatchFrame, Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FPS);while (true){var FrameImg = CvInvoke.cvQueryFrame(CatchFrame);CvInvoke.cvShowImage("打开视频", FrameImg);Image<Bgr, byte> FramePic = new Image<Bgr, byte>(wd,hg);CvInvoke.cvCopy(FrameImg,FramePic,IntPtr.Zero);int c = CvInvoke.cvWaitKey(20);if (c == 13) break;if (c == 32) {Random rd = new Random();Bitmap bt = new Bitmap(FramePic.ToBitmap());string picname = rd.Next()+".jpg";bt.Save(picname);Console.WriteLine("保存成功!"+picname);}}}catch (Exception ex){MessageBox.Show(ex.ToString());}}
—————————————————————————————————————————————————————————————————————————————
运行截图,按下空格键进行截图,并在命令行显示保存的文件名:
验证结果:
需要注意的问题:
int wd = (int)CvInvoke.cvGetCaptureProperty(CatchFrame, Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH);
// 视频高度
int hg = (int) CvInvoke.cvGetCaptureProperty(CatchFrame, Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT);
【EMGU】读取视频AVI文件+保存任意帧为图片相关推荐
- MATLAB的figure文件保存成高清图片的技巧01
figure文件保存成高清图片的技巧01 鉴于广大砖友在用MATLAB保存figure图片时,会出现图片分辨率不够高,粘贴使用不清晰,导致文章整体视觉效果欠佳的情况,我觉得有义务有责任分享一下我的经验 ...
- python一帧一帧读取视频_用Python从视频中提取每一帧的图片
大家应该都有这样的情况:在看到某些视频的画面时感觉美如画,想截取下来却又烦于截图的繁琐,现在我就教大家使用Python提取视频中每一帧的画面,让大家不错过每一个精彩的瞬间! •语言:Python •所 ...
- java 视频 缩略图_如何使用java提取视频缩略图或某一帧的图片
[Java] 纯文本查看 复制代码public class CreateImage { /** * 获取指定视频的帧并保存为图片至指定目录 * [url=home.php?mod=space& ...
- python批量读取视频并按指定数量抽帧
import cv2 import time import os i=0 j=250 file1='./file1/' f = os.listdir('./video') for im in f:pr ...
- C++Opencv实时读取摄像头视频保存指定帧图片
空格截图到指定文档 string writePath = "../temp/"; int main(int argc, char** argv){VideoCapture capt ...
- cv2.VideoWriter生成avi文件无法打开
cv2.VideoWriter生成avi文件无法打开 在opencv的学习中会遇到用cv2.VideoWriter创建的avi文件无法打开的问题,很多问题其他的文章都有,这是我自己碰到的没有出现过的问 ...
- python︱批量操作文件(os)、图片操作技巧(下载网络图片、skimage.io)
文章目录 @[toc] . 一.遍历操作文件 1.文件名字获取 **注意,不能`import glob` ,不然就会报错:** 2.批量重命名文件os.rename 直接修改了上级目录,test2.t ...
- python(二)进阶之cv2读取视频文件或摄像头,并进行保存帧图像或视频
版本 # 4.5.1 python import cv2 cv2.__version__ 函数 # 参数0表示默认为笔记本的内置第一个摄像头,如果需要读取已有的视频则参数改为视频所在路径, # 例如: ...
- java opencv 读取视频_java使用OpenCV从视频文件中获取帧
本文实例为大家分享了java使用OpenCV从视频文件中获取帧的具体代码,供大家参考,具体内容如下 实现功能:使用Java获取mp4.mov.avi等视频文件中的图像帧,每秒获取一帧图像,并保存 环境 ...
最新文章
- 关于IOS的屏幕适配(iPhone)——资源适配
- WinCE中sources文件中targetlibs与sourcelibs的作用与区别
- Android VNC Server
- spring boot + vue + element-ui全栈开发入门——项目部署
- 少儿编程100讲轻松学python(十一)-python如何保留小数点位数
- oracle 11g 通过在线重定义方式修改表结构
- [经典]技术面试宝典: 很全面的算法和数据结构知识(含代码)
- AFNetworking请求服务器错误
- avr单片机流水灯程序c语言,动手学AVR单片机流水灯实验电路和程序实现.doc
- matlab加特定频率的噪声,如何在Matlab/Simulink中生成指定的白噪声和有色噪声
- 电子加速器原理与应用
- 极域课堂分发文件与一键开关机教程
- VBA:MsgBox函数
- my love(新贵公子主题歌)铃声 my love(新贵公子主题歌)手机铃...
- 计算机应用月什么,计算机应用月考试卷
- ScriptManager的简单用法
- 极客 android,一款开源的Android极客应用(来一起学习kotlin)
- 迈向更灵活,贝壳 OLAP 平台架构演进历程
- 牛顿插值法与拉格朗日插值法——实例
- Syslog服务器配置和日志转发