学习内容

学习Opencv 读取并播放本地视频和打开摄像头图像以及可能会发生的一些异常问题解决方法

代码演示

电脑环境信息: OpenCV版本:4.5.2 ,vs2017

1.视频文件读取与播放

加载本地视频基本代码:

#include "opencv2/opencv.hpp"
#include <iostream>
#include <Windows.h> using namespace std;
using namespace cv; int main(int argc, char **argv)
{
cv::VideoCapture vedio("D:/workspace/opencv/project/test.mp4");
if (!vedio.isOpened())
{
cout << "读取视频文件失败!" << endl;
return -1;
}
else
{
cout << "读取视频文件成功!" << endl;
} return 0;
}

运行结果

我们发现运行结果是读取失败,然后我们先检查一下文件是否存在,我们的路径是否写错....

经过一阵的捣鼓,发现视频文件确实存在而且没有错误,路径也是非常的正确!

那为什么不能加载呢?试着猜想会不会缺少相关的库造成呢,经探索,opencv播放是依赖ffmpeg的,所以我们去找相关的库放在同exe目录下试试。

1.找到安装的opencv目录处

2.复制到我们debug目录下跟exe同级

接下来我们再运行一次

哎,运行成功啦。

接下来,读取视频文件没有问题啦,就进行显示代码的编写

#include "opencv2/opencv.hpp"
#include <iostream>
#include <Windows.h> using namespace std;
using namespace cv; int main(int argc, char **argv)
{
cv::VideoCapture vedio("D:/workspace/opencv/project/test.mp4");
if (!vedio.isOpened())
{
cout << "读取视频文件失败!" << endl;
return -1;
}
else
{
cout << "读取视频文件成功!" << endl;
} Mat frame;
namedWindow("Vedio", WINDOW_NORMAL); /*视频文件的宽高和帧率信息*/
cout << "Vedio Width:" << vedio.get(CAP_PROP_FRAME_WIDTH) << endl;
cout << "Vedio Height:" << vedio.get(CAP_PROP_FRAME_HEIGHT) << endl;
cout << "Vedio FPS:" << vedio.get(CAP_PROP_FPS) << endl; /*循环读取视频文件*/
while (true)
{
vedio >> frame; /*获取一帧*/ if (frame.empty()) /*读取完成则退出*/
break; double sec = 1000.0 / vedio.get(CAP_PROP_FPS);/*播放速度*/ if (waitKey(sec) == VK_ESCAPE) /*播放过程中可按ESC退出播放*/
break; imshow("Vedio", frame); /*显示帧*/
} destroyAllWindows();/*清理资源*/ return 0;
}

运行结果



播放视频文件编写完成!

2.读取摄像头图像

有了上面的基础,编写读取摄像头的方式就非常简单啦

#include "opencv2/opencv.hpp"
#include <iostream>
#include <Windows.h> using namespace std;
using namespace cv; int main(int argc, char **argv)
{
cv::VideoCapture vedio;
vedio.open(0); /*读取第一个摄像头*/ if (!vedio.isOpened())
{
cout << "打开摄像头失败!" << endl;
return -1;
}
else
{
cout << "打开摄像头成功!" << endl;
} Mat frame;
namedWindow("Vedio", WINDOW_NORMAL); /*视频文件的宽高和帧率信息*/
cout << "Vedio Width:" << vedio.get(CAP_PROP_FRAME_WIDTH) << endl;
cout << "Vedio Height:" << vedio.get(CAP_PROP_FRAME_HEIGHT) << endl; /*循环读取视频文件*/
while (true)
{
vedio >> frame; /*获取一帧*/ if (frame.empty()) /*读取完成则退出*/
break; int sec = 25;/*播放速度*/ if (waitKey(sec) == VK_ESCAPE) /*播放过程中可按ESC退出播放*/
break; imshow("Vedio", frame); /*显示帧*/
} destroyAllWindows();/*清理资源*/ return 0;
}

运行结果



以上就是利用OpenCV读取摄像头的内容

四.结束

简单的东西也需要做简单的记录,在打开摄像头这里,只能按Index序号打开,但如果实际中存在有多个摄像头的时候呢?如何区分以及如何去指定打开其中一个摄像头?值得思考一下,敬请待续。

Opencv 播放mp4文件和读取摄像头图以及可能会发生的一些异常问题解决方法的更多相关文章

  1. 使用opencv在Qt控件上播放mp4文件

    文章目录 简介 核心代码 运行结果 简介 opencv是一个开源计算机视觉库,功能非常多,这里简单介绍一下OpenCV解码播放Mp4文件,并将图像显示到Qt的QLabel上面. 核心代码 头文件 #i ...

  2. video.js播放mp4文件

    HTML5的标签 video 支持的mp4编码为视频编码 H.264 音频AAC 参考网址 http://www.w3school.com.cn/html5/html_5_video.asp 视频格式 ...

  3. 视频播放效果--video.js播放mp4文件

    HTML5的标签 video 支持的mp4编码为视频编码 H.264 音频AAC 参考网址 http://www.w3school.com.cn/html5/html_5_video.asp 视频格式 ...

  4. ffmpeg和opencv 播放视频文件和显示器

    ffmpeg它是基于最新版本,在官网下载http://ffmpeg.zeranoe.com/builds/.编译时VS2010配置相关头文件及库的路径就可以.opencv的搭建參考上一个博客. 首先简 ...

  5. Ubuntu下编译安装OpenCV 2.4.7并读取摄像头[转]

    主要参考: 1.http://www.ozbotz.org/opencv-installation/ 2.http://www.ozbotz.org/opencv-install-troublesho ...

  6. 配置IIS让网站可以播放mp4文件

    最近遇到这么一个问题,网站当中的mp4不能播放了--每次点击播放的时候都会产生404的错误(如下图).这个问题来得有些蹊跷,因为在这台服务器上其他的文件都能正常执行,比如xml.jpg.aspx等文件 ...

  7. Ubuntu下编译安装OpenCV 2.4.7并读取摄像头

    主要参考: 1.http://www.ozbotz.org/opencv-installation/ 2.http://www.ozbotz.org/opencv-install-troublesho ...

  8. ios学习:AVAudioPlayer播放音乐文件及读取ipod库中的音乐文件

    首先要导入AVFoundation框架及 #import <AVFoundation/AVFoundation.h>头文件 注意:要在真机上调试 下面是ipad上的调试效果 下面是代码,代 ...

  9. JavaCV推流实战(MP4文件)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. [c++] 内存与变量

    内存 程序代码区用来保存指令,常量区.全局数据区.堆.栈都用来保存数据 常量区和全局数据区有时也被合称为静态数据区,意思是这段内存专门用来保存数据,在程序运行期间一直存在 函数被调用时,会将参数.局部 ...

  2. [Windows] 屏幕截图 - FastStone Capture(FSCapture) v9.4 飞扬时空汉化绿色版(官方地址) 【清晰好用 已验证】

    [Windows] 屏幕截图 - FastStone Capture(FSCapture) v9.4 飞扬时空汉化绿色版(官方地址) [复制链接]     愤怒の葡萄 电梯直达 楼主    发表于 2 ...

  3. 单臂路由实现不同vlan间通信

    单臂路由实现不同vlan间通信 拓扑图 PC配置 PC1 :192.168.1.1 vlan10 192.168.1.254 PC2 :192.168.2.1 vlan20 192.168.2.254 ...

  4. DES加密 超详解 及 C++编程实现

    参考资料: 1.计算机与软件学院实验报告管理系统资料 2.强烈推荐观看:<信息安全技术>课程微课设计 简介 什么是DES DES全称为Data Encryption Standard,即数 ...

  5. MySQL 查询操作

    目录 基本语法 查询常量 查看表达式 查询函数 查询指定字段 查询所有列 列别名 表别名 条件查询 条件查询运算符 逻辑查询运算符 排序与分页 排序查询(order by) 排序方式 limit 分组 ...

  6. 【JDK命令行 一】手动编译Java源码与执行字节码命令合集(含外部依赖引用)

    写作目标 记录常见的使用javac手动编译Java源码和java手动执行字节码的命令,一方面用于应对 Maven 和 Gradle 暂时无法使用的情况,临时生成class文件(使用自己的jar包):另 ...

  7. Vue全家桶之组件化开发

    Vue全家桶之组件化开发   一.组件 组件 (Component) 是 Vue.js 最强大的功能之一 组件可以扩展 HTML 元素,封装可重用的代码   二. 组件注册 2.1 全局注册 Vue. ...

  8. 【注意力机制】Attention Augmented Convolutional Networks

    注意力机制之Attention Augmented Convolutional Networks 原始链接:https://www.yuque.com/lart/papers/aaconv 核心内容 ...

  9. NVIDIA GPU自动调度神经网络

    NVIDIA GPU自动调度神经网络 对特定设备和工作负载进行自动调整对于获得最佳性能至关重要.这是有关如何使用自动调度器为NVIDIA GPU调整整个神经网络. 为了自动调整神经网络,将网络划分为小 ...

  10. AI芯片加速图像识别

    AI芯片加速图像识别 AI chip accelerates image recognition 法国研究机构CEA-Leti和LIST在2020年VLSI研讨会上展示了一种概念验证芯片,该芯片集成了 ...