如何实现在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实现ip查询示例
Mar 26 Python
Python for Informatics 第11章之正则表达式(二)
Apr 21 Python
Python中的字符串查找操作方法总结
Jun 27 Python
Django与JS交互的示例代码
Aug 23 Python
Python并发:多线程与多进程的详解
Jan 24 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
详解Django 时间与时区设置问题
Jul 23 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
python Cartopy的基础使用详解
Nov 01 Python
解决numpy数组互换两行及赋值的问题
Apr 17 Python
4种方法python批量修改替换列表中元素
Apr 07 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
laravel 数据验证规则详解
2019/10/23 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
浅谈小程序globalData的那些事儿
2019/11/01 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
js实现随机点名
2021/01/19 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
Python实现扩展内置类型的方法分析
2017/10/16 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
Python中整数的缓存机制讲解
2019/02/16 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
实习生自我评价
2014/01/18 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
入党综合考察材料
2014/06/02 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
千万级用户系统SQL调优实战分享
2022/03/03 MySQL