Python调用OpenCV接口播放本地视频文件、本地和网络摄像头
1 前言
上篇文章介绍了在WIN10系统上, C++调用OpenCV接口,播放本地视频文件、本地和网络摄像头视频。本篇我们来看一下,Python如何调用OpenCV接口,做同样的事情。
序号 |
视频来源 |
视频格式/协议 |
参数 |
1 |
本地视频文件 |
MP4 |
文件名称 |
2 |
笔记本摄像头 |
摄像头序号 |
|
3 |
网络摄像头 |
RTSP |
rtsp://admin:123456@192.168.1.105:554/Streaming/Channels/101 |
下边我们用海康IP摄像机做测试,所以表格中的rtsp地址,是海康摄像机的URL格式,其它品牌(大华、宇视)与之类似。
rtsp://admin:123456@192.168.1.105:554/Streaming/Channels/101
rtsp:表示采用RTSP协议从摄像机取流
admin:摄像机网页登录用户名
123456:摄像机网页登录密码
192.168.1.105:摄像机IP地址
554:RTSP默认端口
2 调用流程
以播放本地视频文件为例,流程如下,详细过程请参见后边代码。
- 打开视频文件
- 查看视频参数
- 循环读取视频每一帧
- 在窗口显示视频
- 当按下q或Q键时,退出当前播放
- 释放相关资源
3 创建测试项目
创建测试项目、配置开发环境,具体可参考这篇文章,过程就不多说了。
Win10+Python3.10+OpenCV4.6.0加载显示图片_chexlong的博客-CSDN博客
这次测试项目名称play_video,VS2022种创建好的项目截图
将下列代码编辑到play_video.py文件里
# !usr/bin/env python
# -*- coding: utf-8 -*-
import cv2
import numpy as np#打开本地视频文件或网络摄像头,并播放视频
def OpenAndPlayVideoFile(filename):try:print("======to start play video file...")#使用OpenCV自带的VideoCapture()函数定义视频文件对象,网络摄像机本质上可以看作远程网络视频文件cap = cv2.VideoCapture(filename)#打印视频参数:宽、高、每秒传输帧数print('width = ', cap.get(cv2.CAP_PROP_FRAME_WIDTH))print('height = ', cap.get(cv2.CAP_PROP_FRAME_HEIGHT))print('fps = ', cap.get(cv2.CAP_PROP_FPS))#循环读取每一帧while(cap.isOpened()):#第一个返回值result是一个布尔值,表示当前这一帧是否获取正确result, frame = cap.read()#读取视频文件结束时,退出播放if not result:print('play end...')break#在名称为“video file”的窗口中,显示视频cv2.imshow("video file", frame)#当按下"q"或“Q”键时,退出播放key = cv2.waitKey(1)if key == ord('q') or key == ord('Q'):break#释放视频文件或摄像头资源cap.release()#销毁所有窗口,释放资源cv2.destroyAllWindows()print("end...")except Exception as e:#访问异常的错误编号和详细信息print(str(e))#打开本地摄像头,并播放视频
def OpenAndPlayLocalCamera(index):print("======to start play local camera...")#使用OpenCV自带的VideoCapture()函数定义摄像头对象,打开0号、或1号、或2号...摄像头cap = cv2.VideoCapture(index)#打印视频参数:宽、高、每秒传输帧数print('width = ', cap.get(cv2.CAP_PROP_FRAME_WIDTH))print('height = ', cap.get(cv2.CAP_PROP_FRAME_HEIGHT))print('fps = ', cap.get(cv2.CAP_PROP_FPS))#循环读取每一帧while(cap.isOpened()):#第一个返回值result是一个布尔值,表示当前这一帧是否获取正确result, frame = cap.read()#在名称为“video file”的窗口中,显示视频cv2.imshow("video file", frame)#当按下"q"或“Q”键时,退出播放key = cv2.waitKey(1)if key == ord('q') or key == ord('Q'):break#释放视频文件或摄像头资源cap.release()#销毁所有窗口,释放资源cv2.destroyAllWindows()print("end...")if __name__ == '__main__':#打开本地文件播放video_file = 'opencv.mp4'OpenAndPlayVideoFile(video_file)#打开本地0号摄像头播放OpenAndPlayLocalCamera(0)#打开网络摄像头播放url = 'rtsp://admin:123456@192.168.1.105:554/Streaming/Channels/101'
OpenAndPlayVideoFile(url)
程序中实现了下边2个播放函数:
#打开视频文件或网络摄像头,并播放视频
OpenAndPlayVideoFile(filename)#打开本地摄像头,并播放视频
OpenAndPlayLocalCamera(index)
代码中的视频文件opencv.mp4,放置在测试项目工程当前目录,如截图:
VS中代码截图:
4 播放效果截图
视频文件:
网络摄像头:
调试控制台输出:
5 参考
opencv 摄像头操作详解 - 我坚信阳光灿烂 - 博客园
Python调用OpenCV接口播放本地视频文件、本地和网络摄像头相关推荐
- Python 调用 ffmpeg-python 模块实现对视频文件切片,转码为 m3u8 格式并修改分辨率
实操场景 Python将MP4文件转码为m3u8格式视频. 本实战环节用到的模块依旧是 ffmpeg-python . 首先通过 ffmpeg 命令完成转码工作. 第一步,将视频转码为 ts 格式 f ...
- Win10系统,用C++调用OpenCV接口,播放本地视频文件,播放本地和网络摄像头
1 前言 前边2篇文章介绍了在WIN10系统上,分别用C++和Python调用OpenCV接口,加载和显示一张静态图片.本篇我们来看一下,用C++如何调用OpenCV接口,打开和播放本地视频文件,打开 ...
- python播放本地视频_python opencv 读取本地视频文件 修改ffmpeg的方法
Python + opencv 读取视频的三种情况: 情况一:通过摄像头采集视频 情况二:通过本地视频文件获取视频 情况三:通过摄像头录制视频,再读取录制的视频 摄像头采集.本地视频文件的读取.写视频 ...
- python 保存视频流_python3将视频流保存为本地视频文件
使用python3+opencv3.3.1环境将视频流保存为本地视频文件,具体内容如下 1.利用opencv中的VideoCapture类获取视频流的链接,通过cv2的方法得到该视频流的帧数和每帧大小 ...
- python怎么保存文件视频教程_python3将视频流保存为本地视频文件
使用python3+opencv3.3.1环境将视频流保存为本地视频文件,具体内容如下 1.利用opencv中的VideoCapture类获取视频流的链接,通过cv2的方法得到该视频流的帧数和每帧大小 ...
- python调用opencv处理视频_Python调用OpenCV读写视频
最近因为经常对视频进行操作,所以记录下Python用opencv来读写视频的方法. 一.opencv读视频 python调用opencv来读视频比较简单,可以直接调用cv2.VideoCapture来 ...
- 基于PyQt5实现播放本地视频文件
基于Python和PyQt5实现播放本地视频文件 基于Python和PyQt5实现通过按钮点击打开本地视频文件(.mp4/.avi等)并播放. 亲测有效! 效果 Springboot播放视频
- OpenCV学习:播放avi视频文件
#if 0 //播放avi视频文件(IplImage) #include <opencv2/opencv.hpp> using namespace std; #pragma comment ...
- PP视频如何播放本地视频文件
今天小编给广大用户分享PP视频如何播放本地视频文件.PP视频手机版是一款装机必备的手机视频播放软件,用户可在线观看PP视频全部免费高清正版视频,海量内容,高清画质,自由点播,配合先进的P2P下载技术, ...
最新文章
- 关于ios中编译ffmpeg0.9.2库
- android广告平台刷量,数据显示:Android平台广告营收首超iOS
- PHP报“Cannot start session without errors”
- mysql数据库入门教程(14):函数
- Spring5的系统架构
- PhpExcel 删除默认的Sheet
- easyui datagrid url不请求请求_Go Web编程--深入学习解析HTTP请求
- [转载] 1022 D进制的A+B (20分)【java题解】【80ms】
- 从折叠屏到AR 三星Galaxy新品预热宣传片大招频现
- Oracle的数据字典常用操作(持续更新)
- java seqlist_java_实现链表以及链表的测试类
- 30个免费网页设计模板
- Python-变分模态分解(VMD)python代码及其测试用例
- 超市仓库管理系统python+tkinter
- 极域电子教室软件怎么脱离控制_如何制定职业发展目标,才能避免“现实发展脱离职业规划”的问题...
- Liang-Barsky裁剪算法
- IntelliJ IDEA2020安装使用(保姆级)
- 如何实现跨行跨地区转账实时到帐而且免手续费?
- Android 仿淘宝京东等我的订单界面及任意列表拓展
- 【Anki】模板自定义