如何实现在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多线程操作实例
Nov 21 Python
Python爬取网易云音乐热门评论
Mar 31 Python
python分治法求二维数组局部峰值方法
Apr 03 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
Python将8位的图片转为24位的图片实现方法
Oct 24 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
python脚本后台执行方式
Dec 21 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
解决springboot yml配置 logging.level 报错问题
Feb 21 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
关于js datetime的那点事
2011/11/15 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
2016/05/14 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
Python简单实现Base64编码和解码的方法
2017/04/29 Python
浅谈Python中range和xrange的区别
2017/12/20 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
Python3字符串encode与decode的讲解
2019/04/02 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
学校出纳员岗位职责
2014/03/18 职场文书
员工安全责任书范本
2014/07/24 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
2014最新实习证明模板
2014/10/02 职场文书
2015年售票员工作总结
2015/04/29 职场文书