如何实现在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中实现三目运算的方法
Jun 21 Python
通过mod_python配置运行在Apache上的Django框架
Jul 22 Python
django进阶之cookie和session的使用示例
Aug 17 Python
10个Python小技巧你值得拥有
Sep 29 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
基于matplotlib xticks用法详解
Apr 16 Python
Django ORM 查询表中某列字段值的方法
Apr 30 Python
python在一个范围内取随机数的简单实例
Aug 16 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
使用tensorflow 实现反向传播求导
May 26 Python
Pytorch中的学习率衰减及其用法详解
Jun 05 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 新手入门教程
2009/08/03 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
PHP查询分页的实现代码
2017/06/09 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
JS中比Switch...Case更优雅的多条件判断写法
2019/09/05 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
python简易远程控制单线程版
2018/06/20 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
Pyqt5自适应布局实例
2019/12/13 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
青年标兵事迹材料
2014/08/16 职场文书
党章培训心得体会
2014/09/04 职场文书
2014年宣传工作总结
2014/11/18 职场文书
辅导员学期工作总结
2015/08/14 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript