Opencv 播放mp4文件和读取摄像头图以及可能会发生的一些异常问题解决方法
学习内容
学习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文件和读取摄像头图以及可能会发生的一些异常问题解决方法的更多相关文章
- 使用opencv在Qt控件上播放mp4文件
文章目录 简介 核心代码 运行结果 简介 opencv是一个开源计算机视觉库,功能非常多,这里简单介绍一下OpenCV解码播放Mp4文件,并将图像显示到Qt的QLabel上面. 核心代码 头文件 #i ...
- video.js播放mp4文件
HTML5的标签 video 支持的mp4编码为视频编码 H.264 音频AAC 参考网址 http://www.w3school.com.cn/html5/html_5_video.asp 视频格式 ...
- 视频播放效果--video.js播放mp4文件
HTML5的标签 video 支持的mp4编码为视频编码 H.264 音频AAC 参考网址 http://www.w3school.com.cn/html5/html_5_video.asp 视频格式 ...
- ffmpeg和opencv 播放视频文件和显示器
ffmpeg它是基于最新版本,在官网下载http://ffmpeg.zeranoe.com/builds/.编译时VS2010配置相关头文件及库的路径就可以.opencv的搭建參考上一个博客. 首先简 ...
- Ubuntu下编译安装OpenCV 2.4.7并读取摄像头[转]
主要参考: 1.http://www.ozbotz.org/opencv-installation/ 2.http://www.ozbotz.org/opencv-install-troublesho ...
- 配置IIS让网站可以播放mp4文件
最近遇到这么一个问题,网站当中的mp4不能播放了--每次点击播放的时候都会产生404的错误(如下图).这个问题来得有些蹊跷,因为在这台服务器上其他的文件都能正常执行,比如xml.jpg.aspx等文件 ...
- Ubuntu下编译安装OpenCV 2.4.7并读取摄像头
主要参考: 1.http://www.ozbotz.org/opencv-installation/ 2.http://www.ozbotz.org/opencv-install-troublesho ...
- ios学习:AVAudioPlayer播放音乐文件及读取ipod库中的音乐文件
首先要导入AVFoundation框架及 #import <AVFoundation/AVFoundation.h>头文件 注意:要在真机上调试 下面是ipad上的调试效果 下面是代码,代 ...
- JavaCV推流实战(MP4文件)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- [DB] SQL 必知必会
整体架构 数据类型 文本类:CHAR.VARCHAR(可变长度字符,多使用).TEXT.LONGTEXT(文本较大时使用) 数字类:TINYINT.INT.BIGINT.FLOAT.DOUBLE 日期 ...
- [刷题] 203 Remove Linked List Elements
要求 在链表中删除值为val的所有节点 示例 如 1->2->3->4->5->6->NULL,要求删除值为6的节点 返回1->2->3->4-& ...
- 8.12-14 df 、mkswap、swapon、swapoff、sync
8.12 df:报告文件系统磁盘空间的使用情况 -a 显示所有文件系统 -h 以容易理解的格式显示磁盘的使用情况端 -i 显示文件系统的inode信息迷 -t 显示指定类型 ...
- 使用nuget包下载Entity Framework6.0无法使用模型类与数据库上下文自动生成controller与view
解决方法:卸载掉原有的6.0版本EF,从控制台安装5.0版本的. >工具>库程序包管理器>程序包管理器控制台.在PM>后面输入安装命令. 命令如下 Install-Packag ...
- Python3.x 基础练习题100例(91-100)
练习91: 题目: 时间函数举例1. 程序: if __name__ == '__main__': import time print (time.ctime(time.time())) print ...
- 企业实施CRM系统后的积极作用
公司在发展过程中,可能会遇到各种各样的问题,尤其是来自客户的问题,是最令广大企业头痛的.这并不是一个单方面的问题,不仅涉及到员工也涉及到企业.因此,许多企业使用CRM客户管理系统来管理客户,并通过它来 ...
- 在windows上 使用celery 报错
在windows上 使用celery 报错 在windows上 使用celery 报错 ValueError: not enough values to unpack (expected ...
- checkbox,select,radio 选取值,设定值,回显值
获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val();获取select被选中项的文本var item = $(" ...
- CVPR2020论文解析:视觉算法加速
CVPR2020论文解析:视觉算法加速 GPU-Accelerated Mobile Multi-view Style Transfer 论文链接:https://arxiv.org/pdf/2003 ...
- 立体显示与BCN双稳态手性向列相
立体显示与BCN双稳态手性向列相 狭缝光栅立体显示 技术介绍: 人的左右眼间距大约是65MM,左右眼透过视差光栅看到不同的视角图像,经大脑融合形成立体视觉. 技术优点: 2D/3D可切换: 低成本: ...