opencv 摄像头/视频读取_写入

来源:互联网 发布:大秦帝国 纵横 知乎 编辑:程序博客网 时间:2024/06/05 20:13
#include"opencv2/opencv.hpp"using namespace cv;using namespace std;void main(){   VideoCapture cap;//视频相关的类   Size size0=Size(568*320)   VideoWriter  writer("E\\out.avi",CV_FOURCC('X','V','I','D'),20,size0,true);   cap.open("1.avi");//打开视频   //cap.open(0);//打开摄像头   //VideoCapture("1.avi");   if(!cap.isOpened())       return;   int width=cap.get(CV_CAP_PROP_FRAME_WIDTH);//帧宽度   int height=cap.get(CV_CAP_PROP_FRAME_HEIGHT);//帧高度   int frameRate=cap.get(CV_CAP_PROP_FPS);//帧率   int totalFrames=cap.get(CV_CAP_PROP_FRAME_COUNT);//总帧数   cout<<"视频宽度="<<width<<endl;   cout<<"视频高度="<<height<<endl;   cout<<"视频总帧数="<<totalFrames<<endl;   cout<<"帧率="<<frameRate<<endl;   Mat frame;   while(1)   {       cap>>frame;       //cap.read(frame);       if(frame.empty());           break;        writer<<frame;       //writer.write(frame);       imshow("video",frame);      // waitKey(20);       if(waitKey(20)>0)           break;   }   cap.release();   destroyAllWindows();}

VideoCapture类常用函数功能
1)open()—打开视频文件或者摄像头
2)isOpened()—判断读取视频文件是否正确 正确返回true
3)release()–关闭视频流文件
4)grab()-抓取下一帧的视频文件或设备
5)Retrieve()—解码并返回视频帧
6)get()———返回指定视频类的相关信息
7)set()———设置类信息的一个属性


几点说明:

1)打开的视频可以是本地文件也可以是网络视频
2)打开视频一定要加异常判断 例如上述代码
——————————————————————————————————
读取摄像头
1)读取摄像头方法
VideoCapture cap;
cap.open(int Index);
注:
1)如果默认电脑只有一个USB摄像头,Index=0,如果有2个,一般Index为0和1 根据具体情况区分 ,摄像头接入或者断开会改变Index的值
2)如果接入两个以上,但只想用指定的一个,可以在设备管理器中禁用其他,同时Index设置为0
3)用waitKey()返回值判断退出预览


写入视频
VideoWriter
CV_WRAP VideoWriter(const string&filename,int fourcc,double fps,Size frameSize,bool isColor=true);
CV_WRAP VideoWriter();
类的构造函数可以指定文件名,播放帧率 帧尺寸 是否创建彩色空间
1)两种写入帧的方法
1 writer.write(frame);
2 writer<

原创粉丝点击