![]() |
OpenCV 4.12.0
开源计算机视觉
|
OpenCV于1999年由Gary Bradski在英特尔创建。第一个版本于2000年发布。Vadim Pisarevsky加入Gary Bradski,管理英特尔俄罗斯软件OpenCV团队。2005年,OpenCV被用于Stanley;这辆车赢得了2005年DARPA Grand Challenge。后来,在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捕获网络摄像头视频,并通过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引入了一套新的教程,将指导您了解OpenCV.js中提供的各种功能。本指南主要关注OpenCV 3.x版本。
OpenCV.js教程的目的是
由于OpenCV.js能够直接在浏览器中运行,因此OpenCV.js教程网页直观且具有交互性。例如,使用WebRTC API和评估JavaScript代码将允许开发人员更改CV函数的参数,并在网页上进行实时CV编码以实时查看结果。
建议事先了解JavaScript和Web应用程序开发,以便理解本指南。
以下是OpenCV.js绑定和教程的贡献者列表。