生活不易 我用python学python不出局虫虫

你知道Jupyter notebook还可以用来做 “视频聊天室

2018-12-20  本文已影响8人  天善智能

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

作者:Martin Renou

编译:wLsq

Ipywidgets在Jupyter生态系统中扮演着重要角色,它带来了用户和数据之间的互动。小工具组件是多种的Python对象,通常在Jupyter Notebook或JupyterLab中具有可视化表示:按钮,滑块,文本输入,复选框等。

Ipywidgets链接:

https://github.com/jupyter-widgets/ipywidgets

用户无需编写Python代码就可以使用鼠标操作并设置滑块完成交互

表示Python小组件的对象是在服务器端(后端)的Python内核(负责执行Jupyter Notebook中的代码的部分)中工作的。Python对象包含有所有小组件状态的信息。对于滑块小部件,Python对象包含最小值,最大值,以及当前值。这个Python对象(在后端,服务器端)可以与窗口小组件的Javascript模型(在前端,客户端)同步,这个前端模型也包含了有关小组件的相同信息。每次用户在笔记本中显示小组件时,它都会创建一个与Javascript模型保持同步的视图。在上面示例中,您可以看到两个视图是同步的。

ipywidgets不仅仅是一个交互式小组件库,它也是一个功能强大的框架,可以直接创建新的自定义小组件。开发人员可以通过使用widget-cookiecutter项目快速启动包含代码结构和封装的最佳实践的小组件库。

widget-cookiecutter链接:

https://github.com/jupyter-widgets/widget-cookiecutter/

已经有许许多多不同的小组件库被创建好了,你可以直接使用mybinder在线试用它们,而无需安装任何东西,下面的一些功能均可以在线操作试用,链接如下:

https://mybinder.org/

bqplot:2-D交互式数据

ipyleaflet:交互式地图

pythreejs:交互式三维场景 

ipyvolume:3-D交互式数据可视化和多卷渲染

nglview:三维交互式分子可视化 

gmaps:Google地图上的数据可视化 

itk-jupyter-widgets:交互式2-D和3-D数据可视化

从ipywidgets 7.4开始,我们有两个新的小组件:音频和视频,可以在Jupyter Notebook和Jupyterlab中轻松进行图像/音频处理。 

与Image小组件一样,新的音频和视频小组件在后端和前端之间同步二进制数据。你可以使用自己喜欢的库(OpenCV,scikit-image 等)轻松操作此数据,并动态更新窗口小组件值。

在视频小组件上使用OpenCV进行边缘检测

这两个小组件都是用于创建ipywebrtc库不错的构建块。ipywebrtc由Maarten Breddels创建(Maarten是著名库vaex和ipyvolume的作者)。它利用WebRTC浏览器API的强大功能,允许在Jupyter笔记本内部进行媒体流传输

ipywebrtc的API非常简单:首先,用户将创建我们称之为媒体流的小组件API。媒体流小组件也可以是:

  • 一个WidgetStream小组件,给定任何输入小组件

  • 一个VideoStream小组件,给定一个视频小组件作为输入 

  • 一个ImageStream小组件,给定一个图像小组件作为输入 

  • 一个AudioStream小组件,给定一个音频小部件作为输入 

  • 一个CameraStream小组件,它为用户的网络摄像头创建视频/音频流

  • 使用媒体流小组件,你可以: 

  • 使用VideoRecorder小组件录制电影

  • 使用ImageRecorder小部件拍摄快照

  • 使用AudioRecorder小部件录制音频

  • 使用简单的聊天功能将其流式传输到同级

  • 至于其他小部件库,只需点击此链接即可立即试用。你将能够尝试所有这些工作流程。

    https://mybinder.org/v2/gh/maartenbreddels/ipywebrtc/master?filepath=docs/source

    假设你想使用计算机上的摄像头动态地执行图像处理,并运行人脸识别,边缘检测或任何其他奇特的算法。使用ipywebrtc实现起来非常简单。你需要做的就是创建一个CameraStream小组件的实例,在摄像头视频流作为输入的情况下创建一个ImageRecorder,并实现处理图像的回调(例如使用scikit-image)。

    使用CameraStream的快照创建ImageRecorder,并使用scikit-image动态处理图像

    ipywebrtc的另一个不错的功能是能够从任何小组件创建媒体小组件。这意味着你可以轻松地从您喜欢的小组件库中记录图像和视频,以进行二维或三维数据可视化(此处为ipyvolume)。

    使用ipyvolume小组件作为输入创建WidgetStream,并使用VideoRecorder录制视频

    一旦你使用了库的这些不错功能,你就可以下载你创建的视频/图像。或者,你可以使用聊天功能直接共享它们。此功能将聊天室名称和你要共享的流(默认为CameraStream)作为输入,并允许您将Jupyter Notebook转换为会议室!

    在PyPairs演讲期间,使用ipywebrtc创建的聊天室

    Github上制作这些图像的示例:

    https://github.com/QuantStack/quantstack-talks/tree/master/2018-11-14-PyParis-widgets/notebooks

    关于作者

    作者名字是Martin Renou,是QuantStack的科学软件工程师。加入QuantStack之前,在SUPAERO学习。曾在巴黎的Logilab和剑桥的Enthought工作过。作为QuantStack的开源开发人员,参与了各种项目,从xsimd和xtensor在C ++到ipyleaflet和ipywebrtc在Python和Javascript中。

    - END -

    往期精彩:

  • 金州勇士4年3冠的成功秘诀!数据可视化分析告诉你答案

  • 20张图表达程序员的心酸

  • 干货 | 机器学习概念的深度解析(入门必看)

  • 一款非常棒的特征选择工具:feature-selector

  • 高效方法 | Jupyter Notebook 比你想象中的还要强大

  • 公众号后台回复关键词学习

    回复 免费                获取免费课程

    回复 直播                获取系列直播课

    回复 Python           1小时破冰入门Python

    回复 人工智能         从零入门人工智能

    回复 深度学习         手把手教你用Python深度学习

    回复 机器学习         小白学数据挖掘与机器学习

    回复 贝叶斯算法      贝叶斯与新闻分类实战

    回复 数据分析师      数据分析师八大能力培养

    回复 自然语言处理  自然语言处理之AI深度学习

    上一篇下一篇

    猜你喜欢

    热点阅读