opencv笔记 1.利用摄像头进行视频文件写入

利用摄像头进行视频文件写入,并用了一次滤波函数,模仿视频渐变过程。可以通过改变滤波内核的变化速率调整渐变效果的快慢。

//利用摄像头进行视频文件写入,并用一次滤波函数模仿视频渐变过程
#include<opencv2/opencv.hpp>
#include "highgui.h" 
#include<iostream>
using namespace cv;
using namespace std;

int main()
{
    VideoCapture capture(0);                        //打开摄像头
    Mat frame;                                      //定义储存图像的mat类型变量
    //double rate = capture.get(CAP_PROP_FPS); //定义帧率,如果是打开视频文件
    Size videoSize(capture.get(CAP_PROP_FRAME_WIDTH), capture.get(CAP_PROP_FRAME_HEIGHT));
    VideoWriter writer("../result.avi", CV_FOURCC('M', 'J', 'P', 'G'), 20, videoSize);   
    //(5个参数分别为文件名,视频格式,帧率,帧尺寸,bool isColortrue(默认的)如果想保存一个彩色视频,这个值为true,否则为false。)20相当于rate,表示帧率

    if (!writer.isOpened())                         //测试是否打开写文件成功
    {
        cout << "写入视频文件打开失败!" << endl;
        return -1;
    }

    int kernel=0;                                  //定义一个变量存储内核值
    for (int i = 0; i <200;i++)                    //拍摄一个10秒的视频,因为上面定义的帧率为20,所以循环200次正好是10秒
    {
        capture >> frame;                          //读入帧
        imshow("原图", frame);                     //显示

        kernel = (i /10)+1;                        //设置滤波的内核尺寸kernel,使逐渐增大,内核最小为1,不能为0
        blur(frame, frame, Size(kernel,kernel));   //采用一次均值滤波
        writer << frame;                           //写入视频文件

        //cvtColor(frame, frame, CV_BGR2GRAY); //彩色转为灰度图 
        imshow("中值滤波图", frame);               //显示

        waitKey(30);                               //等待显示

    }

    return 0;

}

你可能感兴趣的:(视频,opencv,摄像头,图像渐变)