如何实现在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 相关文章推荐
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
正确理解python中的关键字“with”与上下文管理器
Apr 21 Python
python网络爬虫学习笔记(1)
Apr 09 Python
Python爬虫包BeautifulSoup学习实例(五)
Jun 17 Python
python语音识别实践之百度语音API
Aug 30 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
Dec 10 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
python实现逐个读取txt字符并修改
Dec 24 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
如何写php程序?
2006/12/08 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
php时间计算相关问题小结
2016/05/09 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
json 实例详细说明教程
2009/10/31 Javascript
js原型链原理看图说明
2012/07/07 Javascript
JavaScript定义变量和变量优先级问题探讨
2014/10/11 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
vue中的inject学习教程
2019/04/24 Javascript
python list语法学习(带例子)
2013/11/01 Python
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
python实现Decorator模式实例代码
2018/02/09 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
django2笔记之路由path语法的实现
2019/07/17 Python
python写程序统计词频的方法
2019/07/29 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
ORACLE第二个十问
2013/12/14 面试题
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
大学毕业后的十年规划
2014/01/07 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
责任书格式范文
2014/07/28 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
数据库之SQL技巧整理案例
2021/07/07 SQL Server
Python requests用法和django后台处理详解
2022/03/19 Python
ant design charts 获取后端接口数据展示
2022/05/25 Javascript