如何实现在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实现strcmp函数功能示例
Mar 25 Python
python实现简单的TCP代理服务器
Oct 08 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
Jul 12 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
python判断一个集合是否为另一个集合的子集方法
May 04 Python
python flask实现分页的示例代码
Aug 02 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
python版本五子棋的实现代码
Dec 11 Python
python利用dlib获取人脸的68个landmark
Nov 27 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
pyspark对Mysql数据库进行读写的实现
Dec 30 Python
linux系统下pip升级报错的解决方法
Jan 31 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
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
javascript的事件描述
2006/09/08 Javascript
javascript 表单验证常见正则
2009/09/28 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
用python登录Dr.com思路以及代码分享
2014/06/25 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
python小程序实现刷票功能详解
2019/07/17 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
生产经理的自我评价分享
2013/11/07 职场文书
学院书画协会部门职责
2013/11/28 职场文书
申报优秀教师材料
2014/12/16 职场文书
2016年春节慰问信息
2015/03/25 职场文书
庆七一主持词
2015/06/29 职场文书
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS