网络编程
位置:首页>> 网络编程>> Python编程>> opencv3/C++实现视频读取、视频写入

opencv3/C++实现视频读取、视频写入

作者:阿卡蒂奥  发布时间:2021-12-17 10:01:16 

标签:opencv3,视频读取,视频写入

视频读取

视频读取,主要利用VideoCapture类下的方法打开视频并获取视频中的帧,具体示例如下:


#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;

int main()
{
 VideoCapture capture;
 Mat frame;
 frame= capture.open("E:/image/a1.avi");
 if(!capture.isOpened())
 {
   printf("can not open ...\n");
   return -1;
 }
 namedWindow("output", CV_WINDOW_AUTOSIZE);

while (capture.read(frame))
 {
   imshow("output", frame);
   waitKey(10);
 }
 capture.release();
 return 0;
}

capture.open()的参数为0时为读取摄像头:


frame= capture.open(0);

视频写入

通过摄像头获取视频,然后通过capture.get(CV_CAP_PROP_FRAME_WIDTH), capture.get(CV_CAP_PROP_FRAME_HEIGHT)获取当前帧的宽度和高度,创建一个VideoWriter类对象writer进行视频的写入。

写入前可进行视频的简单处理。


#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;

int main()
{
 VideoCapture capture;
 capture.open(0);
 if(!capture.isOpened())
 {
   printf("can not open ...\n");
   return -1;
 }

Size size = Size(capture.get(CV_CAP_PROP_FRAME_WIDTH), capture.get(CV_CAP_PROP_FRAME_HEIGHT));
 VideoWriter writer;
 writer.open("E:/image/a2.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, size, true);

Mat frame, gray;
 namedWindow("output", CV_WINDOW_AUTOSIZE);

while (capture.read(frame))
 {
   //转换为黑白图像
   cvtColor(frame, gray, COLOR_BGR2GRAY);
   //二值化处理
   threshold(gray, gray, 0, 255, THRESH_BINARY | THRESH_OTSU);
   cvtColor(gray, gray, COLOR_GRAY2BGR);
   imshow("output", gray);
   writer.write(gray);
   waitKey(10);
 }

waitKey(0);
 capture.release();
 return 0;
}

opencv3/C++实现视频读取、视频写入

来源:https://blog.csdn.net/akadiao/article/details/78865138

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com