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

在解决图像处理问题的时候,可以利用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()

最终的运行效果如下:

不过运行这段代码的时候,可能会提示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中播放视频(不停地展示图片)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈JupyterNotebook导出pdf解决中文的问题

    1.将ipynd编译成tex 建议将其放在桌面处理 ipython nbconvert -to latex pdf.ipynb 2.修改tex 双击打开转换的文件在\documentclass{article}后面插入 \usepackage{fontspec, xunicode, xltxtra} \setmainfont{Microsoft YaHei} \usepackage{ctex} 3.编译tex 生成pdf xelate pdf.tex 补充知识:Jupyter notebook

  • Jupyter Notebook折叠输出的内容实例

    一.问题描述 当Jupyter Notebook的输出内容很多时,为了屏幕可以显示更多的代码行,我需要将输出的内容进行折叠. 二.解决方法 1.鼠标操作 (1)鼠标左键双击输出单元格的左侧灰色区域. (2)展开:鼠标左键单机下方的灰色区域即可.如下图所示: 2.快捷键操作 (1)按Esc键 (2)按字母O (3)展开:同上. 补充知识:Python 找出出现次数超过数组长度一半的元素实例 利用问题的普遍性和特殊性来求解,代码如下: import unittest from datetime im

  • 解决Jupyter notebook中.py与.ipynb文件的import问题

    在jupyter notebook中,因为其解析文件的方式是基于json的,所以其默认保存的文件格式不是.py而是.ipynb.而.ipynb文件并不能简单的import进.py或者.ipynb文件中,这就为开发带来了极大不便.因为在jupyter notebook中,一定要是在默认的.ipynb下才能有一系列的特性支持,比如自动补全,控制台等待,而.py文件只能通过文本编辑器修改,非常非常不便. 因为.ipynb可以import .py的module,所以其中一个解决方法是将已经写好的.ipy

  • 查看jupyter notebook每个单元格运行时间实例

    打开jupyter notebook, 进入这儿: 搜索框里搜索time,并选中Execute Time,大功告成!!! 最后是这样的, 很方便有木有(如果不行可以尝试重启一下jupyter notebook). 之前有见过其他方法: 命令行里输入: pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user jupyter nbextension enable execute_time/

  • jupyter notebook 实现matplotlib图动态刷新

    我就废话不多说了,大家还是直接看代码吧! import matplotlib %matplotlib inline from IPython import display 需要刷新的地方,画完图之后添加 display.clear_output(wait=True) 补充知识:jupyter notebook matplotlib绘制动态图并显示在notebook中 有些时候matplotlib 的绘图没法显示在notebook中,或者显示不了.这与backend有关. 首先启动你的notebo

  • 解决matplotlib.pyplot在Jupyter notebook中不显示图像问题

    在代码首行添加: %matplotlib inline 即可. 补充知识:jupyter不能显示Matplotlib 动画 看莫烦老师的matplotlib教程中,有一段sinx函数动画,用Jupyter跑却不能显示动画效果. 解决方案:在前面加一句%matplotlib notebook 动画代码如下: %matplotlib notebook import tensorflow as tf import numpy as np import matplotlib.pyplot as plt

  • jupyter notebook中新建cell的方法与快捷键操作

    jupyter notebook中,你可能需要在当前cell的上面或下面添加新的cell,通过菜单栏.工具栏和快捷键可以实现 菜单栏: 工具栏: 但工具栏中的+号只能在当前cell的下方加新的cell 快捷键: 在当前cell上方新建cell:A 在当前cell下方新建cell:B 注意: 大写状态下的A和小写状态下的a都可以 快捷键方式都是要在非编辑状态下按下才有用 非编辑状态: 编辑状态: 编辑状态下可以按Esc到非编辑状态 另外,有两个经常会用到的快捷键: 执行当前cell,并自动跳到下一

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

    在解决图像处理问题的时候,可以利用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

  • 在jupyter notebook中调用.ipynb文件方式

    正常来说在jupyter notebook 中只能调用.py文件,要想要调用jupyter notebook自己的文件会报错. Jupyter Notebook官网介绍了一种简单的方法: http://jupyter-notebook.readthedocs.io/en/latest/examples/Notebook/Importing%20Notebooks.html 添加jupyter notebook解析文件 首先,创建一个python文件,例如Ipynb_importer.py,代码如

  • ipython jupyter notebook中显示图像和数学公式实例

    1. # 可以使用LaTeX表示数学公式 # 可以使用LaTeX表示数学公式 from IPython.display import Latex Latex(r"$\sqrt{x^2+y^2}$") 2. # SymPy的表达式也可以显示为LaTex %load_ext sympyprinting from sympy import * x, y = symbols("x,y") sqrt(x**2+y**2) 3. # 用Image类显示"jupyter

  • jupyter notebook中美观显示矩阵实例

    我就废话不多说了,还是直接看代码吧! from IPython.display import display,Latex,Math %matplotlib inline from IPython.core.interactiveshell import InteractiveShell sh = InteractiveShell.instance() def number_to_str(n,cut=5): ns=str(n) format_='{0:.'+str(cut)+'f}' if 'e'

  • 离线状态下在jupyter notebook中使用plotly实例

    首先创建一个新的python3记录,之后在开始位置输入以下语句并执行: import plotly import plotly.offline as py py.init_notebook_mode(connected=False) import plotly.graph_objs as go 注意此时实际上是将plotly的库文件写在了ipynb文件内部,因此保存后的ipynb文件会比较大,一般在5M以上. 补充知识:plotly 绘制离线图例(折线) 我就废话不多说了,还是直接看代码吧! #

  • Jupyter notebook中5个有趣的魔法命令分享

    目录 1.脚本代码写入本地文件 2.执行Py文件 3.监测代码运行时间 4.使用系统命令行 5.快速debug 知识点补充 众​所周知,Jupyter notebook是一个交互式的Python shell,也就是IPython的封装版,非常适合用来进行数据分析和机器学习. Jupyter notebook中有很多实用且鲜为人知的功能,可以实现有趣的操作 这次举5个简单的例子. 1.脚本代码写入本地文件 %%file方法可以将脚本代码写入本地Py文件. %%file E:\hello.py de

  • jupyter notebook中图片显示不出来的解决

    报错: D:\Program Files\Anaconda3\lib\site-packages\matplotlib\figure.py:445: UserWarning: Matplotlib is currently using module://ipykernel.pylab.backend_inline, which is a non-GUI backend, so...... 解决方法: import matplotlib matplotlib.use('TkAgg') import

随机推荐