如何实现在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写xml文件的操作实例
Oct 05 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
Numpy的简单用法小结
Aug 28 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
详解Python中的format格式化函数的使用方法
Nov 20 Python
Python中 Global和Nonlocal的用法详解
Jan 20 Python
tensorflow保持每次训练结果一致的简单实现
Feb 17 Python
python图片合成的示例
Nov 09 Python
python调用百度API实现人脸识别
Nov 17 Python
细说NumPy数组的四种乘法的使用
Dec 18 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编写和读取XML的几种方式
2013/01/12 PHP
php数组和链表的区别总结
2019/09/20 PHP
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
详解利用jsx写vue组件的方法示例
2017/07/17 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
Vue如何跨组件传递Slot的实现
2020/12/14 Vue.js
python实现倒计时的示例
2014/02/14 Python
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
实习介绍信范文
2015/05/05 职场文书
消夏晚会主持词
2015/06/30 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书