一.视频加载(读取)/摄像头调用使用的是同一个函数:VideoCapture( )


get函数使用,如video.get(CAP_PROP_FOURCC)

视频实时显示与播放:video>>Mat

二.视频文件保存

三.示例:视频读取和播放


运行结果:(GIF动图)

附上例代码:

#include<opencv2\opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;int main()
{VideoCapture video;video.open("D:/opencv/风筝冲浪.mp4");if (!video.isOpened()){cout << "请检查视频文件" << endl;return -1;}cout <<"视频帧率=" << video.get(CAP_PROP_FPS) << endl;cout <<"视频宽度=" << video.get(CAP_PROP_FRAME_WIDTH) << endl;while (1){Mat frame;video >> frame;if (frame.empty()){break;}imshow("video",frame);uchar c = waitKey(1000 / video.get(CAP_PROP_FPS));//视频播放速度if (c == 'q'){break; //按q键退出程序}}return 0;
}

四.示例:摄像头调用

只需将上例代码中的路径改为camera number:0

运行结果:(GIF动图)

五.示例:将摄像头读到的图像或将处理后的视频再次保存为文件

代码:

#include<opencv2\opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;int main()
{Mat img;VideoCapture video(0);//使用某个摄像头//读取视频//VideoCapture video;//video.open("D:/opencv/风筝冲浪.mp4")if (!video.isOpened())//判断是否调用成功{cout << "打开摄像头失败,请确认摄像头是否安装成功";return -1;}video >> img;//获取图像//检测是否成功获取图像if (img.empty())//判断读取图像是否成功{cout << "没有获取到图像" << endl;return -1;}bool isColor = {img.type() == CV_8UC3 };//判断相机(视频)类型是否为彩色VideoWriter writer;//定义写入视频的一个对象int codec = VideoWriter::fourcc('M','J','P','G');//选择编码格式//OpenCV 4.0版设置编码格式//int codec=CV_FOURCC('M','J','P','G');double fps = 25.0;//设置视频帧率string filename = "newCamera.avi";//保存的视频文件名称writer.open(filename, codec, fps, img.size(), isColor);//创建保存视频文件的视频流if (!writer.isOpened())//判断视频流是否创建成功{cout << "打开视频文件失败,请确认是否为合法输入" << endl;return -1;}while (1){//检测是否执行完毕if (!video.read(img))//判断能否继续从摄像头或者视频文件中读出一帧图像{cout << "摄像头断开连接或者视频读取完成" << endl;break;}writer.write(img);//把图像写入视频流//writer<<img;imshow("newCamera",img);//显示图像    char c = waitKey(50);if (c == 27)//按”Esc“键退出视频保存{break;}}//退出程序时自动关闭视频流//video.release();//writer.release();return 0;
}

运行结果:(GIF动图)

保存到的视频文件:newCamera.avi

OpenCV4每日一练day7:视频加载、摄像头调用、视频文件保存相关推荐

  1. 小米视频加载进度条效果实现

    原文:小米视频加载进度条效果实现 好吧,其实这些都是我闲暇时自己做着玩的,以前总是拿来主义,现在分享一下让我也为大家做一点贡献好了.废话不说了,看效果. 好吧 其实没什么技术含量 直接上代码好了 和我 ...

  2. 微信小程序开发视频加载:[渲染层网络层错误] Failed to load media

    问题: 加载多个视频时遇到的报错,原因是调试基础库版本太高,虽然不会影响视频播放,可是不解决看着心里又难受. 解决方法: 在video标签里加controls <video src=" ...

  3. 微信小程序-首屏视频加载

    项目场景: 微信小程序开发: 实现小程序首页视频预加载功能 1.获取设备的宽和高度 2.小程序video的使用 获取设备的宽和高度 // 获取设备的宽和高度getsize() {let that = ...

  4. uniapp m3u8格式视频加载

    uniapp一:mui-player:三方  h5 web app uniapp 使用 mui-player 插件播放 m3u8/flv 视频流_翘翘红的博客-CSDN博客 uniapp 开发的h5项 ...

  5. 使用Android Glide技术实现图片加载和播放视频

    ​ Glide特点 使用简单 可配置度高,自适应程度高 支持常见图片格式 Jpg png gif webp 支持多种数据源 网络.本地.资源.Assets 等 高效缓存策略 支持Memory和Disk ...

  6. 穿山甲广告接入 视频加载成功 不播放直接跳到结束

    问题 穿山甲广告接入 设备上视频加载成功,但播放时黑屏或者加载图片白屏,之后跳转endcard是什么原因引起的? 如图,广告视频请求成功 缓存成功,但是一直走播放错误回调. 其实是网络安全配置导致的. ...

  7. HTML5 单个或者多个Video标签视频加载第一帧方法(poster属性)

    最近在做这个前端视频加载第一帧的功能,查了很多资料基本上有两种思路: 一.canvas画图取base64格式编码设置poster属性的方法: 二.给定图片设置在视频上方,点击图片隐藏起来,视频追加播放 ...

  8. 在html中怎么插入腾讯视频,腾讯视频加载方案, 网页嵌入腾讯视频方式 iframe, 网页嵌入腾讯视频方式...

    前言:更多详细内容可以参考腾讯开发平台的文档,我在这里简单备忘一下 方法一:引入iframe 在视频播放界面的左下方,鼠标移动到分享,复制通用代码放在页面上即可 腾讯视频加载方案, 网页嵌入腾讯视频方 ...

  9. Python时间序列模型推理预测实战:时序推理数据预处理(特征生成、lstm输入结构组织)、模型加载、模型预测结果保存、条件判断模型循环运行

    Python时间序列模型推理预测实战:时序推理数据预处理(特征生成.lstm输入结构组织).模型加载.模型预测结果保存.条件判断模型循环运行 目录

最新文章

  1. jquery兼容IE和火狐下focus()事件
  2. 手机验证码倒记时函数
  3. Data Structure - 返回单链表的中间结点
  4. 如何对加载的数个模型只进行transform呢
  5. boost::fusion::single_view用法的测试程序
  6. M2 Scrum 12.05
  7. CSS美化滚动条的方法
  8. LINQ 中的 select
  9. MySql数据库驱动类
  10. w8服务器dns修改,Win8.1系统的DNS地址如何修改?修改win8.1系统DNS地址图文教程
  11. Mac中使用svn进行项目管理
  12. nginx基础概念(100%)之request
  13. 微课|中学生可以这样学Python(2.3.3节):reduce()函数
  14. sql 转置_SQL 如何实现动态的行列转置
  15. java B2B2C springmvc mybatis电子商务平台源码-------zuul网关实现
  16. CSS垂直居中的11种实现方式
  17. 使用Epoch-Based Reclamation(EBR,特定域回收的一种方法)修改 lazy-list
  18. 算法设计——极大极小搜索
  19. 用户画像标签数据开发之标签权重计算
  20. 一周AI要闻回顾 | FB新研究颠覆CNN,加州新政允许无人卡车路测

热门文章

  1. biodist r语言_R语言 Biostrings包 pairwiseAlignment()函数中文帮助文档(中英文对照)
  2. 基于JAVA+SpringBoot+Mybatis+MYSQL的医药进销存管理系统
  3. linux malloc速度,性能 – memcpy()的速度受malloc()的不同方式的影响很大
  4. reduce python_python reduce()函数使用
  5. sql-libs(6) 双引号的报错注入
  6. python实现以及所有排序大总结【转】
  7. Android学习--广播机制
  8. call和apply;this;闭包
  9. 利用sort对数组快速排序
  10. 12. Docker修改默认存储位置