如何实现在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的Flask框架中实现分页功能的教程
Apr 20 Python
详解Python读取配置文件模块ConfigParser
May 11 Python
利用python求相邻数的方法示例
Aug 18 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
在主流系统之上安装Pygame的方法
May 20 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
Jun 09 Python
浅析python 字典嵌套
Sep 29 Python
通过案例解析python鸭子类型相关原理
Oct 10 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
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
Using the TextRange Object
2006/10/14 Javascript
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
应届毕业生自我评价分享
2013/12/15 职场文书
父亲生日宴会答谢词
2014/01/10 职场文书
新浪微博实习心得体会
2014/01/27 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
2014年生产部工作总结
2014/12/17 职场文书
出租车拒载检讨书
2015/01/28 职场文书
详解jQuery的核心函数和事件处理
2022/02/18 jQuery