Jupyter Notebook使用ipywidgets动态更换显示图片、预览播放视频【告别matplotlib】

不管是Jupyter Notebook还是IPython Notebook,用过的人都知道,要想达成本地python-opencv一样窗口播放视频的效果是非常麻烦的。

网络上能搜索到的matplotlib动态切换图片,大部分都是绘制函数图,或者就是用clear_output清空输出区域的办法重新绘制,既麻烦又不雅观。
现在给大家介绍一个新的方法,可以在jupyter网页开发时像opencv“窗口”一样播放视频、预览图片,甚至可以做一个在线播放器以查看远程服务器里的视频、图片文件,那就是使用ipywidgets里的Image控件。

最精简的示例

import os
import cv2
import ipywidgets as widgets
from IPython.display import display

imgbox = widgets.Image(format='jpg', height=300, width=400)
display(imgbox)
root = "datasets/Awaken"
for file in os.listdir(root):
    canvas = cv2.imread(os.path.join(root, file))
    imgbox.value = cv2.imencode('.jpg', canvas)[1].tobytes()

效果录屏:
Jupyter Notebook使用ipywidgets动态更换显示图片、预览播放视频【告别matplotlib】Jupyter Notebook使用ipywidgets动态更换显示图片、预览播放视频【告别matplotlib】

原理说明

先不说明了,有急事,以后有时间补上