网站首页 > 开源技术 正文
图像文件可以根据其后缀名知道图像文件的数据结构,但是视频文件后缀名不能说明其数据结构。视频文件能否正常打开,关键是你是否有编码器的解码器
所谓编码器就是指视频文件的压缩算法
所谓解码器就是视频文件的解压缩算法
1、读视频--VideoCapture
视频来源包括两种:(1)读取视频文件;(2)打开摄像头读取实时视频数据。
案例:
读取视频,并每30s读取一帧,对该帧进行边缘检测
int test8() {
//打开摄像头
//VideoCapture cap(0);
//读取视频
VideoCapture cap("C:\\Users\\86188\\Desktop\\swa.mp4");
//检查是否打开成功
if (!cap.isOpened())
{
cerr << "Can not open a camera or file" << endl;
return -1;
}
Mat result;
Mat frame;
//创建一个用于显示的窗口
namedWindow("result",1);
for (;;)
{
//将视频每一帧保存到frame
cap >> frame;
if (frame.empty())
break;
//将得到的图像转化成灰度图
cvtColor(frame, result, COLOR_RGB2GRAY);//COLOR_BGR2GRAY
//显示原图
imshow("原图",frame);
//提取边缘
Canny(result,result,85,150,3);
//显示
imshow("result",result);
if (waitKey(30) >= 0)
break;
}
//退出时会自动释放 cap 中占用资源
return 0;
}
效果如下:
2、写视频--VideoWriter::write()函数
关键是要设置一些参数,包括:文件名,编解码器,帧率,宽度,高度。
三种编解码器的选择(不同OPencv版本函数略有不同)
CV_FOURCC('M','J','P','G')、CV_FOURCC('X','V','I','D')、CV_FOURCC('D','I','V','X')
写视频其实就是将一幅图像写成一个视频文件,所以视频的像素大小必须跟写入图像一样
案例,
int test9() {
Size s(300, 600);//定义视频的宽度和高度
//创建writer,并指定FOURCC及FPS等参数
VideoWriter writer = VideoWriter("C:\\Users\\86188\\Desktop\\myVideo.avi",
VideoWriter::fourcc('M', 'J', 'P', 'G'), 25, s);//opencv4中CV_FOURCC改成fourcc
//检查是否创建成功
if (!writer.isOpened())
{
cerr << "Can not create video file.\n" << endl;
return -1;
}
//视频帧
Mat frame(s, CV_8UC3);//定义三通道图像
for (int i = 0; i < 100; i++)
{
//将图像置为黑色
frame = Scalar::all(0);
//将整数 i 转为 i 字符串类型
char text[128];
snprintf(text, sizeof(text), "%d", i);
//将数字绘到画面上
putText(frame, text, Point(s.width / 3, s.height / 3),
FONT_HERSHEY_SCRIPT_SIMPLEX, 3,
Scalar(0, 0, 255), 3, 8);
//将图像写入视频
writer << frame;
}
//退出程序时会自动关闭视频文件
//上面视频写完了。我们再读取一下,并展示一下效果
VideoCapture myVdieo ("C:\\Users\\86188\\Desktop\\myVideo.avi");
namedWindow("myVideo", 1);
Mat temp;
for (;;)
{
myVdieo >> temp;
if (temp.empty())
break;
imshow("myVideo", temp);
}
//突出程序时候会自动关闭视频文件。或者使用下面进行释放
//myVdieo.release();
return 0;
}
猜你喜欢
- 2024-11-01 python批量下载公众号内的视频(一键下载公众号视频)
- 2024-11-01 [音视频处理] FFmpeg使用指北1-视频解码
- 2024-11-01 FFmpeg 入门(ffmpeg入门详解音视频原理及应用PDF)
- 2024-11-01 网站放家里,随处看电影「Apache+php+ssl 安装和配置」
- 2024-11-01 ffmpeg+srs实现推流(ffmpeg推流gb28181)
- 2024-11-01 泰捷WE30C升级版电视盒子最真实的评测
- 2024-11-01 ffmpeg、ffprobe、ffplay 常用参数及命令行示例说明
- 2024-11-01 乔家一物 i 400 装机展示(乔家一物 jonsplus)
- 2024-11-01 膨来仙岛丨搞电竞的都是什么成分?
- 2024-11-01 ffmpeg视频直播编解码流程(ffmpeg解码udp视频流接口)
你 发表评论:
欢迎- 03-19基于layui+springcloud的企业级微服务框架
- 03-19开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- 03-19SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- 03-19SpringBoot+LayUI后台管理系统开发脚手架
- 03-19layui下拉菜单form.render局部刷新方法亲测有效
- 03-19Layui 遇到的坑(记录贴)(layui chm)
- 03-19基于ASP.NET MVC + Layui的通用后台开发框架
- 03-19LayUi自定义模块的定义与使用(layui自定义表格)
- 最近发表
-
- 基于layui+springcloud的企业级微服务框架
- 开箱即用的前端开发模板,扩展Layui原生UI样式,集成第三方组件
- SpringMVC +Spring +Mybatis + Layui通用后台管理系统OneManageV2.1
- SpringBoot+LayUI后台管理系统开发脚手架
- layui下拉菜单form.render局部刷新方法亲测有效
- Layui 遇到的坑(记录贴)(layui chm)
- 基于ASP.NET MVC + Layui的通用后台开发框架
- LayUi自定义模块的定义与使用(layui自定义表格)
- Layui 2.9.11正式发布(layui2.6)
- Layui 2.9.13正式发布(layui2.6)
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)