OpenCV 4.11.0
开源计算机视觉库
加载中...
搜索中...
未找到匹配项
OpenCV.js 简介和教程

OpenCV

OpenCV 于 1999 年由Gary Bradski在英特尔创建。第一个版本于 2000 年发布。Vadim Pisarevsky加入 Gary Bradski,共同管理英特尔的俄罗斯 OpenCV 软件团队。2005 年,OpenCV 用于 Stanley;这辆车赢得了 2005 年 DARPA 大挑战赛。之后,在 Willow Garage 的支持下,由 Gary Bradski 和 Vadim Pisarevsky 领导,OpenCV 继续积极开发。OpenCV 现在支持大量与计算机视觉和机器学习相关的算法,并且日益壮大。

OpenCV 支持多种编程语言,例如 C++、Python 和 Java,并且可在不同的平台上使用,包括 Windows、Linux、OS X、Android 和 iOS。基于 CUDA 和 OpenCL 的高速 GPU 操作接口也正在积极开发中。OpenCV.js 将 OpenCV 引入开放的 Web 平台,并使其可供 JavaScript 程序员使用。

OpenCV.js:面向 JavaScript 程序员的 OpenCV

Web 是最普遍的开放式计算平台。随着每个浏览器都实现了 HTML5 标准,Web 应用程序能够使用 HTML5 视频标签渲染在线视频,通过 WebRTC API 捕获网络摄像头视频,并通过 canvas API 访问视频帧的每个像素。随着可用多媒体内容的丰富,Web 开发人员需要大量的 JavaScript 图像和视觉处理算法来构建创新型应用程序。对于新兴的 Web 应用程序(例如 Web 虚拟现实 (WebVR) 和增强现实 (WebAR)),此需求更为重要。所有这些用例都需要在 Web 上高效实现计算密集型视觉内核。

Emscripten 是一个 LLVM 到 JavaScript 的编译器。它采用 LLVM 位码(可以使用 clang 从 C/C++ 生成),并将其编译成 asm.js 或 WebAssembly,这些可以直接在 Web 浏览器中执行。Asm.js 是 JavaScript 的高度可优化、低级别的子集。Asm.js 可以在 JavaScript 引擎中进行提前编译和优化,从而提供接近原生的执行速度。WebAssembly 是一种新的可移植、大小和加载时间高效的二进制格式,适合编译到 Web。WebAssembly 的目标是达到原生速度。WebAssembly 目前正在由 W3C 设计为开放标准。

OpenCV.js 是针对 Web 平台的 OpenCV 函数选定子集的 JavaScript 绑定。它允许具有多媒体处理功能的新兴 Web 应用程序受益于 OpenCV 中提供的各种视觉函数。OpenCV.js 利用 Emscripten 将 OpenCV 函数编译成 asm.js 或 WebAssembly 目标,并提供 JavaScript API 供 Web 应用程序访问它们。该库的未来版本将利用 Web 上可用的加速 API,例如 SIMD 和多线程执行。

OpenCV.js 最初是在加利福尼亚大学欧文分校 (UCI) 的并行架构和系统小组中创建的,这是一个由英特尔公司资助的研究项目。OpenCV.js 在 2017 年的 Google Summer of Code 项目中得到了进一步改进并集成到 OpenCV 项目中。

OpenCV.js 教程

OpenCV 推出了一套新的教程,将指导您了解 OpenCV.js 中提供的各种函数。本指南主要关注 OpenCV 3.x 版本

OpenCV.js 教程的目的是:

  1. 帮助提高 OpenCV 在 Web 开发中的适应性
  2. 帮助 Web 社区、开发人员和计算机视觉研究人员以交互方式访问各种基于 Web 的 OpenCV 示例,以帮助他们理解特定的视觉算法。

因为 OpenCV.js 能够直接在浏览器中运行,所以 OpenCV.js 教程网页直观且具有交互性。例如,使用 WebRTC API 并评估 JavaScript 代码将允许开发人员更改 CV 函数的参数,并在网页上进行实时 CV 编码以实时查看结果。

建议您具备 JavaScript 和 Web 应用程序开发方面的预备知识才能理解本指南。

贡献者

以下是 OpenCV.js 绑定和教程的贡献者列表。

  • Sajjad Taheri(初始版本的架构师和 GSoC 导师,加利福尼亚大学欧文分校)
  • Congxiang Pan(GSoC 学生,上海交通大学)
  • Gang Song(GSoC 学生,上海交通大学)
  • Wenyao Gan(学生实习生,上海交通大学)
  • Mohammad Reza Haghighat(项目发起人及赞助商,英特尔公司)
  • Ningxin Hu(学生的导师,英特尔公司)