如何实现在jupyter notebook中播放视频(不停地展示图片)


Posted in Python onApril 23, 2020

在解决图像处理问题的时候,可以利用opencv打开视频,并一帧一帧地show出来,但是要用到imshow(),需要本地的界面支持。

代码如下

# -*- coding:utf-8*-
import cv2
capture = cv2.VideoCapture("D:\\dataset\\chip_gesture.ts")
# 图像处理函数
def processImg(img):
 # 画出一个框
 cv2.rectangle(img, (500, 300), (800, 400), (0, 0, 255), 5, 1, 0)
 # 上下翻转
 # img= cv2.flip(img, 0)
 return img

# 一帧帧地show
while (capture.isOpened()):
 ret, frame = capture.read()
 if not ret:
 break

 result = processImg(frame)
cv2.imshow('result', result)

 # esc键退出
 if 0xFF & cv2.waitKey(30) == 27:
 break

cv2.destroyAllWindows()
capture.release()

但是当我们使用jupyter notebook来编写python程序的时候,cv2.imshow()就不行了。
最终的解决办法是使用ipython.display模块来解决。

from IPython.display import clear_output, Image, display, HTML
import time
import cv2
import base64

current_time = 0

# 图像处理函数
def processImg(img):
 # 画出一个框
 cv2.rectangle(img, (500, 300), (800, 400), (0, 0, 255), 5, 1, 0)
 # 上下翻转
 # img= cv2.flip(img, 0)

 # 显示FPS
 global current_time
 if current_time == 0:
  current_time = time.time()
 else:
  last_time = current_time
  current_time = time.time()
  fps = 1. / (current_time - last_time)
  text = "FPS: %d" % int(fps)
  cv2.putText(img, text , (0,100), cv2.FONT_HERSHEY_TRIPLEX, 3.65, (255, 0, 0), 2)

 return img

def arrayShow(imageArray):
 ret, png = cv2.imencode('.png', imageArray)
 encoded = base64.b64encode(png)
 return Image(data=encoded.decode('ascii'))


video = cv2.VideoCapture("/home/mvg/zmc/playgroud/远大前程27.mp4")

while(True):
 try:
  clear_output(wait=True)
  ret, frame = video.read()
  if not ret:
   break
  lines, columns, _ = frame.shape
  frame = processImg(frame)
  frame = cv2.resize(frame, (int(columns / 4), int(lines / 4)))

  img = arrayShow(frame)
  display(img)
  # 控制帧率
  time.sleep(0.02)
 except KeyboardInterrupt:
  video.release()

最终的运行效果如下:

如何实现在jupyter notebook中播放视频(不停地展示图片)

不过运行这段代码的时候,可能会提示iopub_data_rate_limit问题。如果使用配置文件(推荐)来运行jupyter notebook的话,修改配置文件

vim ~/.jupyter/jupyter_notebook_config.py

将c.NotebookApp.iopub_data_rate_limit = 10000000一行取消注释,改变后面的数据传输上限值,10M差不多能播放视频(有提示再修改上限)。

不使用配置文件的话,在运行时加上参数

jupyter notebook ?NotebookApp.iopub_data_rate_limit=10000000

以上这篇如何实现在jupyter notebook中播放视频(不停地展示图片)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
Python内置数据结构与操作符的练习题集锦
Jul 01 Python
python中字符串类型json操作的注意事项
May 02 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
python最小生成树kruskal与prim算法详解
Jan 17 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
Python中的几种矩阵乘法(小结)
Jul 10 Python
Python JSON编解码方式原理详解
Jan 20 Python
python实现小程序推送页面收录脚本
Apr 20 Python
python 双循环遍历list 变量判断代码
May 04 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
Python多个MP4合成视频的实现方法
Jul 16 Python
Django调用百度AI接口实现人脸注册登录代码实例
Apr 23 #Python
Anaconda和ipython环境适配的实现
Apr 22 #Python
Django框架获取form表单数据方式总结
Apr 22 #Python
Anaconda的安装及其环境变量的配置详解
Apr 22 #Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 #Python
Django实现图片上传功能步骤解析
Apr 22 #Python
Django框架配置mysql数据库实现过程
Apr 22 #Python
You might like
PHP Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
7个JS基础知识总结
2014/03/05 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
python修改操作系统时间的方法
2015/05/18 Python
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
python远程连接MySQL数据库
2019/04/19 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
Django 用户认证组件使用详解
2019/07/23 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
利用python汇总统计多张Excel
2020/09/22 Python
大专生工程监理求职信
2013/10/04 职场文书
初中生学习的自我评价
2013/11/14 职场文书
机电工程学生自荐信范文
2013/12/07 职场文书
公司节能减排倡议书
2014/05/14 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
Python Parser的用法
2021/05/12 Python