如何实现在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 Deque 模块使用详解
Jul 04 Python
python高手之路python处理excel文件(方法汇总)
Jan 07 Python
python自动裁剪图像代码分享
Nov 25 Python
python网络爬虫学习笔记(1)
Apr 09 Python
pandas object格式转float64格式的方法
Apr 10 Python
基于python实现百度翻译功能
May 09 Python
numpy和pandas中数组的合并、拉直和重塑实例
Jun 28 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
Python @property及getter setter原理详解
Mar 31 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 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实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
实现PHP多线程异步请求的3种方法
2014/01/17 PHP
php教程之phpize使用方法
2014/02/12 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
javascript工具库代码
2012/03/29 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
用python实现面向对像的ASP程序实例
2014/11/10 Python
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
Anaconda入门使用总结
2018/04/05 Python
基于python实现高速视频传输程序
2019/05/05 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
三星法国官方网站:Samsung法国
2019/10/31 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
2013年学期结束动员演讲稿
2014/01/07 职场文书
教导处工作制度
2014/01/18 职场文书
高中毕业自我评价
2014/02/08 职场文书
银行办公室岗位职责
2014/03/10 职场文书
学党史心得体会
2014/09/05 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python