【Opencv笔记】利用VideoCapture和VideoWriter函数读取和写入视频文件
来源:互联网 发布:手机多开软件 编辑:程序博客网 时间:2024/05/21 11:04
本程序旨在使用电脑默认摄像头作为捕捉设备,来抓取帧,并进行图像处理。将处理后的视频帧作为一个新的文件保存。
同时创建两个窗口同时显示原始帧和处理过的帧。代码如下:
之前一直报错,看网上教程,尝试了很多解决办法,包括加载Microsoft符号库、修改写入的方式MP42 MJPG等,都是不行,最后发现是对读取的视频帧进行灰度化的时候,参数选择错误,注意是COLOR_BGR2GRAY而不是Bayer2GRAY. Opencv默认的通道是BGR。
#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int main(int,char **){Mat in_frame, out_frame;const char win1[] = "Grabbing...", win2[] = "Recording...";double fps = 30;char file_out[] = "recorded.avi";VideoCapture cap(0); //打开默认摄像机,videocapture函数还可以用来打开视频文件:VideoCapture(const string &filename)if (!cap.isOpened()){cout << "Can not open a capture object." << endl;return -1;}//获取输入视频每一帧的宽度和高度int width =(int)cap.get(CAP_PROP_FRAME_WIDTH);int height =(int)cap.get(CAP_PROP_FRAME_HEIGHT);VideoWriter recVid(file_out, VideoWriter::fourcc('M', 'P', '4', '2'), fps, Size(width, height)); // MSVC是微软视频,仅可在Windows上解码使用,还可选择MJPG,PIM1,FLV1等if (!recVid.isOpened()){cout << "Error!Video File is not open...\n";return -1;}namedWindow(win1);namedWindow(win2);while (true){cap >> in_frame; // 读取视频的每一帧cvtColor(in_frame, out_frame, COLOR_BGR2GRAY);recVid << out_frame; // 将转换后的灰度图写入视频文件imshow(win1, in_frame);imshow(win2, out_frame);if (waitKey(1000/fps) >= 0)break;}cap.release();return 0;}
VideoCapture函数不仅可以打开摄像头,还可以读取视频文件VideoCapture(const string &filename)
0 0
- 【Opencv笔记】利用VideoCapture和VideoWriter函数读取和写入视频文件
- opencv 2.4.9 VideoCapture不能读取视频文件
- opencv 2.4.9 VideoCapture不能读取视频文件
- 【OpenCV3】视频读写cv::VideoCapture和cv::VideoWriter
- opencv 2.4.9 VideoCapture不能读取视频文件【补充】
- opencv笔记 1.利用摄像头进行视频文件写入
- OpenCV:使用VideoCapture类进行视频读取和显示
- OpenCV:使用VideoCapture类进行视频读取和显示
- OpenCV:使用VideoCapture类进行视频读取和显示-Mat
- OpenCV:使用VideoCapture类进行视频读取和显示
- Opencv(四):读取视频文件和摄像头
- opencv 读取视频、打开摄像头、写入视频文件
- opencv 读取视频、打开摄像头、写入视频文件
- OpenCV学习笔记-读取视频文件
- opencv读取摄像头图像和读取视频文件图像
- 【OpenCV3】视频读写——cv::VideoCapture和cv::VideoWriter详解
- 【OpenCV开发】OpenCV:使用VideoCapture类进行视频读取和显示
- OpenCV学习笔记【7】:写入AVI视频文件
- BeanFactoryPostProcessor和BeanPostProcessor的区别
- java 遍历 删除元素 List Set
- spring的rabbitmq配置
- NOIP2016全国信息学分区联赛提高组第二试 蚯蚓
- 初次实践自定义View
- 【Opencv笔记】利用VideoCapture和VideoWriter函数读取和写入视频文件
- Java反射简介
- Android学习——maven插件的安装以及关联源码的几种方式总结
- 项目3-点结构体(2)
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- sh使用-n对参数进行判断无效的问题
- 利用Python,四步掌握机器学习
- Java Android HTTP实现总结
- Android应用实践-数独游戏