OpenCV2编程手册笔记之 10.3处理视频帧
来源:互联网 发布:优酷客户端for mac 编辑:程序博客网 时间:2024/05/19 04:56
对视频的处理其实很简单,就是对图像的处理,但我们要让对视频的处理看着十分清晰,不会造成混乱的感觉,就要定义一个视频处理的类VideoProcess
在这个类中,我们要定义视频,视频中的帧,处理后的结果,视频的延迟作为类的属性
定义获得视频,运行视频帧,帧处理,显示图像的方法
class VideoProcess{private:double delay;cv::Mat Frame;cv::Mat Result;cv::VideoCapture capture;public:void get_capture(std::string name);void run();cv::Mat process(cv::Mat &img, cv::Mat &out);void display(cv::Mat &Frame, cv::Mat Result);};之后,我们就可以按照
读取视频——>运行视频帧——>处理视频帧——>显示图像进行类中每个方法的编写。
这样做的好处最明显的就是可以极大的减少主函数的代码量,使得程序更加简介清楚。
源代码:
//VideoProcess视频处理类#pragma once#include "stdafx.h"#include <opencv2\opencv.hpp>class VideoProcess{private:double delay;cv::Mat Frame;cv::Mat Result;cv::VideoCapture capture;public:void get_capture(std::string name);void run();cv::Mat process(cv::Mat &img, cv::Mat &out);void display(cv::Mat &Frame, cv::Mat Result);};
//类的方法#include "stdafx.h"#include "VideoProcess.h"void VideoProcess::get_capture(std::string name){capture.open(name);if (!capture.isOpened()){std::cout << "打开失败" << std::endl;}int rate = capture.get(CV_CAP_PROP_FPS);delay = 1000 / rate;}void VideoProcess::run(){while (capture.read(Frame)){Result = process(Frame, Result);display(Frame, Result);}}cv::Mat VideoProcess::process(cv::Mat &img, cv::Mat &out){cv::cvtColor(img, out, cv::COLOR_RGB2GRAY);cv::Canny(out, out, 100, 200);return out;}void VideoProcess::display(cv::Mat &Frame, cv::Mat Result){cv::imshow("Before", Frame);cv::imshow("After", Result);cv::waitKey(delay);}
//主函数#include "stdafx.h"#include <opencv2\opencv.hpp>#include "VideoProcess.h"int main(){VideoProcess process;std::string name;std::cin >> name;process.get_capture(name);process.run(); return 0;}
阅读全文
0 0
- OpenCV2编程手册笔记之 10.3处理视频帧
- OpenCV2编程手册笔记之 10.2读取视频序列
- 《OpenCV2 计算机视觉编程手册》视频处理一
- 《OpenCV2 计算机视觉编程手册》视频处理二
- 《OpenCV2 计算机视觉编程手册》视频处理三
- OpenCV2编程手册笔记之 10.5应用光流法跟踪视频中的特征点
- OpenCV2编程手册笔记之 5.6GrabCut提取前景
- OpenCV2编程手册笔记之 2.2存取像素值
- OpenCV2编程手册笔记之 2.3指针遍历图像
- OpenCV2编程手册笔记之 2.4迭代器遍历图像
- OpenCV2编程手册笔记之 4.2计算图像的直方图
- OpenCV2编程手册笔记之 4.4直方图均衡化
- OpenCV2编程手册笔记之 6.2使用低通滤波器
- OpenCV2编程手册笔记之 6.3中值滤波器
- OpenCV2编程手册笔记之 7.5提取连通区域轮廓
- OpenCV2编程手册笔记之 8.2检测Harris角点
- OpenCV2编程手册笔记之 8.3检测FAST特征
- OpenCV2编程手册笔记之 5.2形态学滤波对图像进行腐蚀、膨胀运算
- vue悬停下拉菜单(视频门户网站)
- unity5.6新功能VideoPlayer播放声音,判断视频播放完毕,以及遇到的坑总结
- jsp提交表单的方法
- hdu 2087 剪花布条(kmp)
- vue生命周期和钩子函数的理解
- OpenCV2编程手册笔记之 10.3处理视频帧
- spark中的几个概念File,Block,Split,Task,Partition,RDD以及节点数、Executor数、core数目的关系。
- Vue组件间通信方式
- 新ListView多条目加载 4个(重要)
- zendframework2配置Module
- 超级台阶
- azkaban源码解读
- It怎样从基层做起
- android字体和可免费商用的字体