如何实现在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 16 Python
python学习 流程控制语句详解
Jun 01 Python
python和flask中返回JSON数据的方法
Mar 26 Python
python删除不需要的python文件方法
Apr 24 Python
python判断输入日期为第几天的实例
Nov 13 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
通过python实现随机交换礼物程序详解
Jul 10 Python
python调用支付宝支付接口流程
Aug 15 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
python如何判断IP地址合法性
Apr 05 Python
Python自动化测试基础必备知识点总结
Feb 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
20个PHP常用类库小结
2011/09/11 PHP
PHP删除数组中的特定元素的代码
2012/06/28 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成"...")
2016/11/28 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
初学Python函数的笔记整理
2015/04/07 Python
Python模拟百度登录实例详解
2016/01/20 Python
浅析Python编写函数装饰器
2016/03/18 Python
python爬取网易云音乐评论
2018/11/16 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
英国女士家居服网站:hush
2017/08/09 全球购物
人力资源管理专业学生自我评价
2013/11/20 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
结婚周年感言
2014/02/24 职场文书
年度考核自我鉴定
2014/03/19 职场文书
篝火晚会策划方案
2014/05/16 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
专家推荐信怎么写
2015/03/25 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书