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 调用流程

以播放本地视频文件为例,流程如下,详细过程请参见后边代码。

  1. 打开视频文件
  2. 查看视频参数
  3. 循环读取视频每一帧
  4. 在窗口显示视频
  5. 当按下q或Q键时,退出当前播放
  6. 释放相关资源

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接口播放本地视频文件、本地和网络摄像头相关推荐

  1. Python 调用 ffmpeg-python 模块实现对视频文件切片,转码为 m3u8 格式并修改分辨率

    实操场景 Python将MP4文件转码为m3u8格式视频. 本实战环节用到的模块依旧是 ffmpeg-python . 首先通过 ffmpeg 命令完成转码工作. 第一步,将视频转码为 ts 格式 f ...

  2. Win10系统,用C++调用OpenCV接口,播放本地视频文件,播放本地和网络摄像头

    1 前言 前边2篇文章介绍了在WIN10系统上,分别用C++和Python调用OpenCV接口,加载和显示一张静态图片.本篇我们来看一下,用C++如何调用OpenCV接口,打开和播放本地视频文件,打开 ...

  3. python播放本地视频_python opencv 读取本地视频文件 修改ffmpeg的方法

    Python + opencv 读取视频的三种情况: 情况一:通过摄像头采集视频 情况二:通过本地视频文件获取视频 情况三:通过摄像头录制视频,再读取录制的视频 摄像头采集.本地视频文件的读取.写视频 ...

  4. python 保存视频流_python3将视频流保存为本地视频文件

    使用python3+opencv3.3.1环境将视频流保存为本地视频文件,具体内容如下 1.利用opencv中的VideoCapture类获取视频流的链接,通过cv2的方法得到该视频流的帧数和每帧大小 ...

  5. python怎么保存文件视频教程_python3将视频流保存为本地视频文件

    使用python3+opencv3.3.1环境将视频流保存为本地视频文件,具体内容如下 1.利用opencv中的VideoCapture类获取视频流的链接,通过cv2的方法得到该视频流的帧数和每帧大小 ...

  6. python调用opencv处理视频_Python调用OpenCV读写视频

    最近因为经常对视频进行操作,所以记录下Python用opencv来读写视频的方法. 一.opencv读视频 python调用opencv来读视频比较简单,可以直接调用cv2.VideoCapture来 ...

  7. 基于PyQt5实现播放本地视频文件

    基于Python和PyQt5实现播放本地视频文件 基于Python和PyQt5实现通过按钮点击打开本地视频文件(.mp4/.avi等)并播放. 亲测有效! 效果 Springboot播放视频

  8. OpenCV学习:播放avi视频文件

    #if 0 //播放avi视频文件(IplImage) #include <opencv2/opencv.hpp> using namespace std; #pragma comment ...

  9. PP视频如何播放本地视频文件

    今天小编给广大用户分享PP视频如何播放本地视频文件.PP视频手机版是一款装机必备的手机视频播放软件,用户可在线观看PP视频全部免费高清正版视频,海量内容,高清画质,自由点播,配合先进的P2P下载技术, ...

最新文章

  1. 关于ios中编译ffmpeg0.9.2库
  2. android广告平台刷量,数据显示:Android平台广告营收首超iOS
  3. PHP报“Cannot start session without errors”
  4. mysql数据库入门教程(14):函数
  5. Spring5的系统架构
  6. PhpExcel 删除默认的Sheet
  7. easyui datagrid url不请求请求_Go Web编程--深入学习解析HTTP请求
  8. [转载] 1022 D进制的A+B (20分)【java题解】【80ms】
  9. 从折叠屏到AR 三星Galaxy新品预热宣传片大招频现
  10. Oracle的数据字典常用操作(持续更新)
  11. java seqlist_java_实现链表以及链表的测试类
  12. 30个免费网页设计模板
  13. Python-变分模态分解(VMD)python代码及其测试用例
  14. 超市仓库管理系统python+tkinter
  15. 极域电子教室软件怎么脱离控制_如何制定职业发展目标,才能避免“现实发展脱离职业规划”的问题...
  16. Liang-Barsky裁剪算法
  17. IntelliJ IDEA2020安装使用(保姆级)
  18. 如何实现跨行跨地区转账实时到帐而且免手续费?
  19. Android 仿淘宝京东等我的订单界面及任意列表拓展
  20. 【Anki】模板自定义

热门文章

  1. 鉴源论坛丨民用飞机机载软件是如何表明适航符合性的
  2. 全民经纪人v2.7.49 房产小程序
  3. 2022年湖南省临床执业医师考试第一单元内分泌系统模拟题
  4. 零基础转行可以做软件测试吗?
  5. 【C#】本地服务发送邮件
  6. h5 meta标签大全
  7. 【智能工厂】精工智能工厂规划;透明化车间典型案例呈现
  8. 计算机软件申请专利的认定难点在哪里,计算机软件可专利性问题研究
  9. Educoder - Java入门 - Java循环与分支语句编程各关卡题目总结
  10. STAPLE目标跟踪算法 基于C++ /Opencv实现步骤以及代码详解