OpenCV 4.10.0
开放源代码计算机视觉
|
OpenCV 由 Gary Bradski 于 1999 年在英特尔创建。首个版本于 2000 年发布。Vadim Pisarevsky 与 Gary Bradski 合作管理英特尔俄罗斯软件 OpenCV 团队。2005 年,OpenCV 被用于斯坦利;该车辆赢得了 2005 年 DARPA 挑战赛。后来,在 Willow Garage 的支持下,其活跃开发持续进行,Gary Bradski 和 Vadim Pisarevsky 领导该项目。OpenCV 目前支持大量算法,这些算法与计算机视觉和机器学习相关,并日益扩展。
OpenCV 支持各种编程语言,例如 C++、Python 和 Java,并且适用于包括 Windows、Linux、OS X、Android 和 iOS 在内的不同平台。基于 CUDA 和 OpenCL 的高速 GPU 操作接口也处于活跃开发中。OpenCV.js 将 OpenCV 带到了开放式 Web 平台,并使得对 JavaScript 编程人员可用。
Web 是最普遍的开放计算平台。由于在每个浏览器都实施了 HTML5 标准,Web 应用程序能够使用 HTML5 视频标记呈现在线视频、通过 WebRTC API 捕获网络摄像头视频,以及通过画布 API 访问视频帧的每个像素。由于可用多媒体内容丰富,Web 开发人员需要 JavaScript 中各种图像和视觉处理算法来构建创新应用程序。对于 Web 上新兴的应用程序(例如 Web 虚拟现实 (WebVR) 和增强现实 (WebAR))而言,此要求更为必要。所有这些用例都需要在 Web 上针对计算密集型视觉内核进行高效的实现。
Emscripten 是 LLVM 到 JavaScript 的编译器。它获取 LLVM 字节码(可使用 clang 从 C/C++ 生成),并将其编译成可直接在 Web 浏览器内部执行的 asm.js 或 WebAssembly。Asm.js 是 JavaScript 中高度可优化、低级别的子集。Asm.js 启用了提前编译和 JavaScript 引擎中的优化,这些引擎可提供接近本机的执行速度。WebAssembly 是一种新的便携式二进制格式,尺寸和加载时间效率高,适合于编译到 Web。WebAssembly 的目标是以本机速度执行。WebAssembly 目前正在被设计为 W3C 的开放标准。
OpenCV.js 是一个用于网络平台的选定 OpenCV 函数子集的 JavaScript 绑定。它允许具有多媒体处理功能的新兴 Web 应用程序受益于 OpenCV 中提供的各种视觉功能。OpenCV.js 利用 Emscripten 将 OpenCV 函数编译为 asm.js 或 WebAssembly 目标,并提供可供 Web 应用程序访问的 JavaScript API。该库的未来版本将利用 Web 上可用的加速 API,例如 SIMD 和多线程执行。
OpenCV.js 最初在加利福尼亚大学尔湾分校 (UCI) 的并行架构与系统组中创建,作为由英特尔公司资助的研究项目。在 Google Summer of Code 2017 计划中,OpenCV.js 进一步得到改进并集成到 OpenCV 项目中。
OpenCV 还会提供一套新的教程,引导你了解 OpenCV.js 中提供的各种功能。本指南主要关注 OpenCV 3.x 版本。
OpenCV.js 教程的目的是
由于 OpenCV.js 能够直接在浏览器内部运行,OpenCV.js 教程网页具有直观性和交互性。例如,使用 WebRTC API 和评估 JavaScript 代码将允许开发者更改 CV 函数的参数,并在网页上进行实时的 CV 编码,以实时查看结果。
建议预先了解 JavaScript 和网络应用程序开发,以便理解本指南。
下面列出了参与制作 OpenCV.js 绑定和教程的人员。