如何实现在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中集合类型(set)学习小结
Jan 28 Python
Python中encode()方法的使用简介
May 18 Python
Python导入oracle数据的方法
Jul 10 Python
Python实现一个简单的验证码程序
Nov 03 Python
wxpython实现图书管理系统
Mar 12 Python
Django实现单用户登录的方法示例
Mar 28 Python
Python远程视频监控程序的实例代码
May 05 Python
Django之模板层的实现代码
Sep 09 Python
详解python中groupby函数通俗易懂
May 14 Python
基于django micro搭建网站实现加水印功能
May 22 Python
python基础之爬虫入门
May 10 Python
Python必备技巧之函数的使用详解
Apr 04 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
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
jQuery获取URL请求参数的方法
2015/07/18 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
vue axios用法教程详解
2017/07/23 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
Python实现批量下载图片的方法
2015/07/08 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
python字符串连接方法分析
2016/04/12 Python
Python第三方库的安装方法总结
2016/06/06 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
python主线程捕获子线程的方法
2018/06/17 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
python实现图片中文字分割效果
2019/07/22 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
python返回数组的索引实例
2019/11/28 Python
构建高效的python requests长连接池详解
2020/05/02 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
利用python实现汉诺塔游戏
2021/03/01 Python
篮球兴趣小组活动总结
2014/07/07 职场文书