opencv实现视频抽帧
来源:互联网 发布:河正宇电影知乎 编辑:程序博客网 时间:2024/05/16 06:39
初学opencv,又是第一次写博客,记录一下。
可能会遇到sprintf不安全的警报,稍微再配置里改一下即可
0//抽帧
#include<stdio.h>void capture_frame(){char FileName[80];memset(FileName, 0, sizeof FileName);CvCapture* capture = cvCaptureFromAVI("F:\\006.ts");IplImage* img = 0;int i=99;while (cvGrabFrame(capture)) //每100帧抽取一张图片{i++;if (i %100==0){img = cvRetrieveFrame(capture); sprintf(FileName, "e:\\006\\%d.png", i); //该步骤是连续抽帧的核心cvSaveImage(FileName, img); }}cvReleaseCapture(&capture);}void main(){capture_frame();}
1.//如果需要对图片进行抽帧并裁剪:
#include<stdio.h>#include<highgui.h>#include <opencv2/opencv.hpp> #include<opencv2/highgui/highgui.hpp>using namespace std;using namespace cv;void capture_frame(){char FileName[80];memset(FileName, 0, sizeof FileName);CvCapture* capture = cvCaptureFromAVI("F:\\002.ts");int i = 99;while (cvGrabFrame(capture)){i++;if (i % 100 == 0){ Mat img = cvRetrieveFrame(capture); // retrieve the captured frame Mat B = img(Range(541, 1080), Range::all()); //1920*1080的视频,将抽帧的图像分成4份 Mat A = B(Range::all(), Range(961, 1920)); sprintf(FileName, "e:\\002\\%d.png", i); imwrite(FileName, A);}}cvReleaseCapture(&capture);}void main(){capture_frame();}
2//在1的基础上想对图像的ROI进行涂黑(或者涂白涂红等)
#include<stdio.h>#include<highgui.h>#include <opencv2/opencv.hpp> #include<opencv2/highgui/highgui.hpp>using namespace std;using namespace cv;void capture_frame(){char FileName[80];memset(FileName, 0, sizeof FileName);CvCapture* capture = cvCaptureFromAVI("F:\\006.ts");int i = 99;while (cvGrabFrame(capture)){i++;if (i % 100 == 0){ Mat img = cvRetrieveFrame(capture); // retrieve the captured frame Mat A = img(Range::all(), Range(961, 1920));Mat B= A(Range(0, 540), Range::all());sprintf(FileName, "e:\\006\\%d.png", i);imwrite(FileName,B);IplImage iplimg = B;int x = 287;int y = 72;int width = 320;int height = 40;cvSetImageROI(&iplimg, cvRect(x, y, width, height));cvAddS(&iplimg, cvScalar(-255, -255, -255), &iplimg);cvResetImageROI(&iplimg);imwrite(FileName, B);cvWaitKey(0);}}cvReleaseCapture(&capture);}void main(){capture_frame();}
0 0
- opencv实现视频抽帧
- opencv实现视频播放
- opencv实现视频录制
- ffmpeg+opencv实现视频画中画
- Ogre利用OpenCV实现视频纹理
- opencv实现视频加载与播放
- Ogre利用OpenCV实现视频纹理
- MFC中利用OpenCV实现视频播放
- OpenCV实现视频播放和进度条
- 基于OpenCV实现视频中人脸定位
- opencv实现两个视频拼接显示
- opencv实现视频里人数统计
- opencv实现视频实时去雾算法
- opencv +MFC实现视频播放、暂停、视频标注、跟踪
- opencv提取视频每一帧
- opencv写入视频帧(四)
- OpenCV之处理视频帧
- opencv学习 视频帧截取
- Js中数组与字符串类型的相互转化
- 在服务器上安装windows操作系统
- hpuoj--校赛--与学妹滑雪(最短路+精度判断)
- 实模式和保护模式
- PAT 1102. Invert a Binary Tree (25)
- opencv实现视频抽帧
- 蓝桥杯OJ刷题日记——03-基础练习 字母图形
- Unix环境编程常用头文件
- AJAX 实现动态刷新验证码
- Kettle通过Webservice获取天气信息
- 创业漫话13(沟通和工作方式 下)
- cocos2d-x随笔-1
- 部署图&构件图
- poj 2393 - Yogurt factory