摄像头、视频读取、写入

一、Video 读取

1.api解释

VideoCapture = cap(filename);//打开视频,支持网络上视频
=
VideoCapture cap;
cap.open("E:/OpenCV/videos/fqy.mp4");//打开视频,支持网络上视频
---------------------------------------------------------------
Mat frame = cap.read();  //读取视频
=
cap >> frame;读取视频

---------------------------------------------------------------
//Video的属性获取
cap.get();   
int width = cap.get(CAP_PROP_FRAME_WIDTH);  //帧宽度
int height = cap.get(CAP_PROP_FRAME_HEIGHT); //帧高度
int frameRate = cap.get(CAP_PROP_FPS);  //帧率 
int totalFrames = cap.get(CAP_PROP_FRAME_COUNT); //总帧数
cap.isOpened();//视频是否正确打开
cap.release();//视频资源释放

2.代码演示

VideoCapture cap("E:\\OpenCV\\videos\\fqy.mp4");
Mat src;
if (!cap.isOpened()) {
	return;
}
while (1) {
	cap >> src;
	if (src.empty()) {//把视频读到mat中,一帧一帧控制视频输出
		break;
	}
	imshow("视频播放", src);
	if (waitKey(15) > 0) {//随机按键盘中一个键退出播放,播放视频的帧率为15
		break;
	}	
}
cap.release();
destroyAllWindows();

二、摄像头 读取

1.api解释

VideoCapture cap;
cap.open(0);//打开摄像头,此处的0代表你电脑中的摄像头是第几个

如何查看摄像头
此电脑→右键→属性→设备管理器→照相机
选择正确的摄像头可以将其他的禁用掉
在这里插入图片描述

2.代码演示

VideoCapture cap(0);//代码和上面video的读取一模一样,只需把这里改成0
Mat src;
if (!cap.isOpened()) {
	return;
}
while (1) {
	cap >> src;
	if (src.empty()) {//把视频读到mat中,一帧一帧控制视频输出
		break;
	}
	imshow("视频播放", src);
	if (waitKey(15) > 0) {//随机按键盘中一个键退出播放,播放视频的帧率为15
		break;
	}	
}
cap.release();
destroyAllWindows();

三、Video写入

1.api解释

VideoWriter::VideoWriter(const string& filename, int fourcc, double fps, Size frameSize, bool isColor=true); 
filename表示输出的文件位置
fourcc表示压缩帧,若编码器代号为 -1,则运行时会弹出一个编码器选择框.
fps被创建视频流的帧率。
frame_size视频流的大小。
isColor表示是否彩色视频

vw.write(frame);//写入视频
=
writer << frame;//写入视频

vw.release();//资源释放

2.代码演示

这里我把上面的视频读进程序再写回本地,实则是同一个文件,代码类似上面。
VideoCapture cap("E:\\OpenCV\\videos\\fqy.mp4");
Size size = Size(cap.get(CAP_PROP_FRAME_WIDTH), cap.get(CAP_PROP_FRAME_HEIGHT));
VideoWriter vw("E:\\OpenCV\\videos\\fqy1.mp4",-1,cap.get(CAP_PROP_FPS),size);
Mat src;
if (!cap.isOpened()) {
	return;
}
while (1) {
	cap >> src;
	if (src.empty()) {//把视频读到mat中,一帧一帧控制视频输出
		break;
	}
	imshow("视频播放", src);
	vw << src;
	if (waitKey(15) > 0) {//随机按键盘中一个键退出播放,播放视频的帧率为15
		break;
	}
}
cap.release();
destroyAllWindows();
vw.release();

四、问题

1.打不开
2.保存文件为空
3.保存文件打不开
解决方法如下:
https://blog.csdn.net/qq_30011277/article/details/109219684

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值