基于OpenCV之视频读取,处理和显示框架的搭建(一)
主要包括以下内容:
1.使用的主要函数的说明。
2.两个实例:视频读取和显示。搭建视频读取和处理框架,调用canny函数提取边缘并显示。
3.一些注意事项和代码说明。
一.使用的主要函数
1.延时函数cv::waitKey
函数原型:
intwaitKey(int delay=0)
参数说明:
1). delay<=0代表相对无限等待一个按键;delay>0的时候,函数延时delay毫秒(milliseconds)。但延时是相对的最小延时, 延时不会超过操作系统的a minimumtime between switching threads。在延时的时候,如有按键读入,那么返回按键的ASCII编 码;否则返回-1;
2).至少应该有一个窗口正在使用(Active)。如果有多个,那么延时的对象是所有有效的窗口。
使用范例:
1).if(waitKey(200)>=0) return true;//如果在200毫秒内有按键时间,则返回
2).if (char(waitKey(200))=='q') return true;//如果在200毫秒内按下了‘q’键,则返回
2.返回视频文件的性质函数VideoCapture::get()
视频文件的性质包括比如帧率,下一帧的序列号等等
函数原型:C++: doubleVideoCapture::get(int propId)
参数说明:
参数为实际为枚举类型,如下图
使用范例
VideoCapture capture(“traffic.avi”);
Long count=capture.get(CV_CAP_PROP_FRAME_COUNT)//返回视频文件的帧总数。
3.判断视频文件是否打开成功函数VideoCapture::Isopen()
二.使用实例
1.实例1:基本视频文件的读取和显示
2.实例2:搭建视频文件读取处理显示框架,调用canny算子提取边缘
三.注意事项和代码说明
1.看实例:2的代码,在头文件VideoProc.h中定义了视频处理类VideoProc。请注意成员函数指针*process的定义void(*process)(Mat&,Mat&)。这里定义回调处理函数指针,其类型为指向返回类型为void参数为(Mat&,Mat&)的函数,成员函数void setProcess(void (*)(Mat&,Mat&))对这个指针具体化,但是请注意:在函数声明时形参也被设置同类型的函数指针。
在主函数中,使用了sv.setProcess(canny)使回调函数指针指向canny,而在canny函数中,对单张灰度图像(彩色图像先灰度化)使用Canny算子提取了边缘并返回二值化后的图像。也就是说,视频处理的实质是单张图片的处理;而视频处理的多态性体现在函数指针指向不同的处理函数。
2.实例二实现的目标如下:设置某个帧index即帧序列号(本文中为25),处理过程将在这里暂停,但是按任意键后,处理过程将继续。在整个处理过程中,按下任意键,处理过程将结束。
3.这里的按键事件,并不是意味在命令行窗口或者DOS窗口输出某个字符,而是当光标停留在所创建的窗口上的时候的按键事件。
4.成员函数setcallProcesss(false);设置是否调用处理函数标志位。若设为false->callIt=0,意味输入输出文件一样,即视频文件没有经过处理。设为true->callIt=1,则输出文件经过了处理。
5.注意延时参数设置,假设源视频文件的帧率为FPS,设置延时参数1000/FPS,则经过处理后的视频以相同的帧率播放,注意延时参数为毫秒级,故分子为1000。
基于OpenCV之视频读取,处理和显示框架的搭建(一)的更多相关文章
- 基于opencv将视频转化为字符串Java版
基于opencv将视频转化为字符串Java版 opencv java 先上一个效果图吧 首先,弄清一下原理 我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化 ...
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 前言 最近做回后台开发,重新抓起以前学过的SSM(Spring+Sp ...
- OpenCV的视频读取
现在找一个能拍摄视频的设备真是太容易了.结果大家都用视频来代替以前的序列图像.视频可能由两种形式得到,一个是像网络摄像头那样实时视频流,或者由其他设备产生的压缩编码后的视频文件.幸运的是,OpenCV ...
- 基于OpenGL编写一个简易的2D渲染框架-02 搭建OpenGL环境
由于没有使用GLFW库,接下来得费一番功夫. 阅读这篇文章前请看一下这个网页:https://learnopengl-cn.github.io/01%20Getting%20started/02%20 ...
- 基于OpenCv的人脸检测、识别系统学习制作笔记之一
基于OpenCv从视频文件到摄像头的人脸检测 在OpenCv中读取视频文件和读取摄像头的的视频流然后在放在一个窗口中显示结果其实是类似的一个实现过程. 先创建一个指向CvCapture结构的指针 Cv ...
- OpenCV学习笔记(2)——如何用OpenCV处理视频
如何用OpenCV处理视频 读取视频文件,显示视频,保存视频文件 从摄像头获取并显示视频 1.用摄像头捕获视频 为了获取视频,需要创建一个VideoCapature对象.其参数可以是设备的索引号,也可 ...
- 基于opencv下对视频的灰度变换,高斯滤波,canny边缘检测处理,同窗体显示并保存
如题:使用opencv打开摄像头或视频文件,实时显示原始视频,将视频每一帧依次做灰度转换.高斯滤波.canny边缘检测处理(原始视频和这3个中间步骤处理结果分别在一个窗口显示),最后将边缘检测结果保存 ...
- OpenCV + python 实现人脸检测(基于照片和视频进行检测)
OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...
- 基于OpenCV实现对图片及视频中感兴趣区域颜色识别
基于OpenCV实现图片及视频中选定区域颜色识别 近期,需要实现检测摄像头中指定坐标区域内的主体颜色,通过查阅大量相关的内容,最终实现代码及效果如下,具体的实现步骤在代码中都详细注释,代码还可以进一步 ...
随机推荐
- Kindeditor 函数用途
1.loadScript 加载文件 2.updateState 更新工具条状态 afterCreate在dom加载的时候执行,dom加载完之前执行的 K.ready dom加载完之后执行 ...
- HDU - 4081 Qin Shi Huang's National Road System 【次小生成树】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4081 题意 给出n个城市的坐标 以及 每个城市里面有多少人 秦始皇想造路 让每个城市都连通 (直接或者 ...
- 在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途
contex指上下文,实际上就是一个web项目:path是虚拟目录,访问的时候用127.0.0.1:8080/welcom/*.jsp访问网页,welcome前面要加/;docBase是网页实际存放位 ...
- mutation与action
mutation 作用: 更改state的状态 说明: 每个mutation对象都有字符串类型(type)与回调函数,在回调函数内进行状态修改,回调函数的第一个参数为state eg: mutatio ...
- Entity Framework在Asp.net MVC中的实现One Context Per Request(转)
上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现 ...
- Docker-为镜像添加SSH服务
进入容器的办法有很多,包括exec.attach等命令,但是这些命令都无法解决远程管理容器的问题,因此,需要SSH的支持 基于commit命令创建 docker提供了docker commit命令,支 ...
- Netty使用LineBasedFrameDecoder解决TCP粘包/拆包
TCP粘包/拆包 TCP是个”流”协议,所谓流,就是没有界限的一串数据.TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TC ...
- JVM中垃圾回收算法
GC 算法与种类 GC的概念 Garbage Collection 垃圾收集1960年 List 使用了GCJava中,GC的对象是堆空间和永久区 引用计数法 老牌垃圾回收算法通过引用计算来回收垃圾使 ...
- Codeforces Round #260 (Div. 2) A , B , C 标记,找规律 , dp
A. Laptops time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- Eclipse debug neutron-server
1 首先停掉neutron-server kill neutron-server in screen by ctr-c q-svc 2 cp /usr/local/bin/neutron-server ...