OpenCV (开源计算机视觉库) 是一个开源的计算机视觉和机器学习软件库。OpenCV 的构建旨在为计算机视觉应用程序提供一个通用基础设施,并加速机器感知在商业产品中的应用。作为一款 Apache 2 许可的产品,OpenCV 使企业能够轻松利用和修改代码。
该库拥有超过 2500 个经过优化的算法,其中包括一组全面的经典和最先进的计算机视觉和机器学习算法。这些算法可用于检测和识别面部、识别物体、对视频中的人类行为进行分类、跟踪摄像机运动、跟踪移动物体、提取物体 3D 模型、从立体相机生成 3D 点云、将图像拼接在一起以生成整个场景的高分辨率图像、从图像数据库中查找类似图像、从使用闪光灯拍摄的图像中去除红眼、跟踪眼球运动、识别场景并建立标记以将其与增强现实叠加等。OpenCV 拥有超过 4.7 万的用户社区,估计下载量超过 1800 万。该库广泛应用于公司、研究小组和政府机构。
除了谷歌、雅虎、微软、英特尔、IBM、索尼、本田、丰田等知名公司采用该库外,还有许多创业公司,例如 Applied Minds、VideoSurf 和 Zeitera,也广泛使用 OpenCV。OpenCV 的部署用途涵盖范围广泛,从拼接街景图像、检测以色列监控视频中的入侵、监控中国矿山设备、帮助机器人导航并抓取 Willow Garage 的物体、检测欧洲的游泳池溺水事故、在西班牙和纽约运行互动艺术、检查土耳其的跑道是否有碎屑、检查世界各地工厂产品的标签,到日本快速人脸检测。
它具有 C++、Python、Java 和 MATLAB 接口,支持 Windows、Linux、Android 和 Mac OS。OpenCV 主要侧重于实时视觉应用程序,并在可用时利用 MMX 和 SSE 指令。目前正在积极开发功能齐全的 CUDA 和 OpenCL 接口。有超过 500 个算法,以及大约 10 倍于这些算法的函数,这些函数组成或支持这些算法。OpenCV 用 C++ 本地编写,并且具有与 STL 容器无缝工作的模板接口。
支持
出现故障时
如果您尝试调试 OpenCV 程序
- 首先尝试使用 文档 和 教程 对问题进行故障排除。
- 如果这没有帮助,请在 OpenCV Answers 上搜索答案或提出问题。
- 如果您发现错误或希望提出功能请求,请参阅下一节。
报告问题/请求功能
- 首先,查看 问题跟踪器:通常可以在其中找到已知错误,以及相应的补丁或变通方法。如果您要向现有错误添加内容,请将其作为评论添加到工单中,而不是发布到邮件列表。
- 然后检查 OpenCV Answers,看看是否有其他人问过您的问题或报告过您的错误。
- 如果上述所有步骤都失败,最好的做法是创建一个 工单。
如果您不确定您发现的是否是错误,您可以在 OpenCV Answers 上询问。如果问题被确认是错误,请创建一个工单。
提出问题
在发布到任何 OpenCV 支持论坛/列表之前,请阅读!
- 以下问题为 不 适宜问题
- 一般的调试/编程问题
- 与 OpenCV 无关的软件问题
- 寻求家庭作业帮助
- 请勿直接联系开发人员/维护人员
- 社区无法看到未公开提问/回答的问题或答案
- 当整个社区参与讨论并帮助回答问题时,开源开发效果最佳
- 尽可能具体,说明可重现步骤。如果我们能重现问题,就能快速修复。
- 将所有问题发送到 OpenCV Answers 或其他相应的邮件列表,并将所有错误报告给错误跟踪器。
- 请指定您的平台(Windows 32/64 位、Linux x86/x64/ppc/…、MacOSX 32/64 位/ppc);编译器版本;OpenCV 版本/修订版本;IPP、OpenMP、MMX、SSE… 是否已启用,以及任何其他信息,使我们能够重现环境、识别和定位问题。
- 一个能够重现问题的示例代码对我们帮助最大。请查看 示例 - 了解首选风格(代码尺寸小、跨平台)。无需 提供任何项目文件或 Makefile,如果它是一个简短的单文件示例,我们可以在一分钟内构建并运行它。
- 每当您报告关于 OpenCV 主干版本的错误时,请提供
cv::getBuildInformation()
函数的输出。问题可能出在您的构建设置中,因此日志可以极大地帮助我们。 - 如果您的应用程序很复杂,问题发生在中间某个地方,通常仍然可以创建一个简短的独立示例
- 使用
FileStorage
捕获并存储您传递给函数的数据 - 复制函数调用,并将相应的
FileStorage
读取放在它前面
- 使用
- 准确描述您正在做或尝试做的事情以及哪里出错了。如果您说:“OpenCV 不工作!” - 我们无法帮助您。
- 根据情况,还包括您的
- 回溯
- 相关的配置文件
- 屏幕截图或视频以演示问题
贡献
如果您想帮助我们,有很多方法可以做到。顺便问一下,您看到主页面上的“捐赠”按钮了吗?🙂
您已经有一些代码想要作为库的一部分看到吗?请按照 本指南 进行操作。
用户可以
- 帮助他人,在我们的 问答论坛 上填写一些答案。您不必成为专家才能提供帮助。
- 编写酷炫的教程:请按照 说明 进行操作。
- 将酷炫的演示视频提交到我们的 YouTube 频道。
- 通过 评分和评论 表示感谢。
公司可以
- 成为赞助商,帮助雇用开发人员并组织活动。
- 通过提供代码时间或参与开发决策来为 OpenCV 库做出贡献。
- 提供基础设施(测试农场、构建农场、网站)。