OpenCV处理指定帧画面
来源:互联网 发布:防范和打击电信网络 编辑:程序博客网 时间:2024/06/06 08:49
OpenCV处理指定帧画面
在使用OpenCV进行视频处理的项目中,有些时候需要对视频中的指定帧进行处理。最朴素的想法是读进视频流数据后,遍历至指定帧画面进行处理后返回。这显然存在严重的时间浪费,其实OpenCV的VideoCapture对象提供了直接访问视频指定帧画面的方法。一下对两种访问方式进行介绍,并给出两种方法处理时间的对比。
1. 循环遍历
#include <opencv.hpp>using namespace std;using namespace cv;int main(){ string videoName = "./data/11.mp4"; VideoCapture cap(videoName); Mat frame; clock_t t1 = clock(); for (size_t i = 0; i < cap.get(CV_CAP_PROP_FRAME_COUNT); i++) { if (i == 1000) { clock_t t2 = clock(); cout << "循环遍历方式用时:" << t2 - t1 << "ms" << endl; } else { cap >> frame; continue; } } system("pause"); return 0;}// 输出结果:循环遍历方式用时:2836ms
2. 利用VideoCapture对象的set方法
该方法通过VideoCapture对象的set方法,使用其CV_CAP_PROP_POS_FRAMES属性将VideoCapture对象的起始帧设置到指定位置。
#include <opencv.hpp>using namespace std;using namespace cv;int main(){ string videoName = "./data/11.mp4"; VideoCapture cap(videoName); Mat frame; clock_t t1 = clock(); cap.set(CV_CAP_PROP_POS_FRAMES, 1000); cap >> frame; clock_t t2 = clock(); cout << "设置起点方式用时:" << t2 - t1 << "ms" << endl; system("pause"); return 0;}// 输出结果:设置起点方式用时:88ms
可见,方法1用时将随指定帧号的增加线性增加,方法2用时则比较固定,只消耗了单次设置时间。
阅读全文
0 0
- OpenCV处理指定帧画面
- opencv,调用摄像头对画面进行canny处理
- opencv读取指定帧
- Android 播放视频并获取指定时间的帧画面
- Android 播放视频并获取指定时间的帧画面
- 画面效果的处理
- 影像播放与画面处理
- vb.net 线程处理画面
- 启动画面的细节处理
- OpenCV的配置和获取摄像头画面
- 【OpenCV】IPCamera读取网络摄像头实时画面
- opencv 3D摄像头不能读取画面
- OpenCV之处理视频帧
- opencv处理
- [shell opencv] 对指定目录下所有的图片进行加黑边处理
- 用于处理画面翻页的类
- wxPython画面使用delayedresult进行耗时处理
- FPGA图像处理之多画面显示
- UE4+科大讯飞SDK的.Build.cs配置
- json对象、json字符串的区别和相互转换
- leetcode Container With Most Water
- C#增删改查操作Access数据库之三(数据库的删除)
- 设计模式之抽象工厂模式简介及代码实现
- OpenCV处理指定帧画面
- 【Unity3D问题之EnhanceScollView选择角色3D循环滚动效果实现】
- swift 4.0 版本 无限轮播图
- Python中flatten,matrix.A用法
- 手把手教你用7行代码实现微信聊天机器人 -- Python wxpy
- spring boot 的事务管理
- linux IO子系统和文件系统读写流程
- java后台返回当前日期前30天的数据并排序
- oracle 11g,创建用户,表空间,赋予用户权限,导入dmp