opencv python绑定的包装程序包。

opencv-python-headless的Python项目详细描述


downloads

车轮上的opencv

非官方的为python预先构建的opencv包。

安装和使用

  1. 如果您已经手动安装了以前/其他版本的opencv(例如,python站点包根目录中的cv2模块),请在安装之前将其删除,以避免冲突。

  2. 为您的环境选择正确的软件包:

    有四个不同的软件包,您应该只选择其中一个。不要在同一环境中安装多个不同的软件包。没有插件体系结构:所有包使用相同的命名空间(cv2)。如果您在同一环境中安装了多个不同的软件包,请使用pip uninstall将它们全部卸载,然后只重新安装一个软件包。

    a.标准桌面环境(Windows、MacOS、几乎所有GNU/Linux发行版)的软件包

    • 如果只需要主模块,请运行pip install opencv python
    • 如果需要主模块和contrib模块,请运行pip install opencv contrib python

    b.用于服务器(无头)环境的软件包

    这些包不包含任何gui功能。它们体积较小,适用于更受限制的环境。

    • 如果只需要主模块,请运行pip install opencv python headless
    • 如果需要主模块和contrib模块,请运行pip install opencv contrib python headless(查看opencv documentation中的额外模块列表)
  3. 导入包:

    导入CV2

    所有包都包含haarcascade文件。cv2.data.haarcascades可以用作数据文件夹的快捷方式。例如:

    cv2.cascadescifier(cv2.data.haarcascades+"haarcascade_frontalface_default.xml")

  4. 阅读opencv文档

  5. 在打开新问题之前,请阅读下面的常见问题解答,并查看已打开的其他问题。

常见问题

问:我是否也需要单独安装opencv?

A:不,这些包是特殊的Wheel二进制包,它们已经包含静态构建的opencv二进制文件。

Q:PIP失败,找不到满足要求的版本…

A:很可能这个问题与PIP太旧有关,可以通过运行pip install--upgrade pip来解决。注意,wheel(特别是manylinux)格式目前不支持正确的arm架构,因此pypi中没有针对基于arm的平台的包。但是,opencv python覆盆子pi的包可以从https://www.piwheels.org/中找到。

q:在Windows上导入失败:importorror:dll加载失败:找不到指定的模块。

A:如果在Windows上导入失败,请确保已导入Universal C Runtimemi这也是必需的。

windows n和kn版本不包括opencv所需的媒体功能包。如果您使用的是Windows N或Kn版本,请同时安装Windows Media功能包。

如果上述方法无效,请检查您是否正在使用水蟒。旧版本的anaconda有一个导致错误的错误,请参阅此问题的手动修复。

如果在检查完所有以前的解决方案后仍然遇到错误,请下载依赖项,并打开cv2.pyd(通常位于c:\ users\username\appdata\local\programs\python\pythonxx\lib\site packages\cv2)文件以调试MISsing dll问题。

问:我还有其他一些导入错误?

A:确保您已经删除了opencv python绑定的旧手动安装(站点包中的cv2.so或cv2.pyd)。

q:为什么包中不包含非免费算法?

答:这些软件包中不包括sift和surf等非免费算法,因为它们获得了专利,因此不能作为构建的二进制文件分发。有关更多信息,请参见本期:https://github.com/skvark/opencv python/issues/126

q:为什么包和导入不同(opencv python与cv2)?

答:相比于cv2,用户更容易理解opencv python,也更容易通过搜索引擎找到软件包。cv2(旧opencv版本中的旧接口命名为cv)是opencv开发人员在创建绑定生成器时选择的名称。这被保留为导入名称,以便与Internet上的不同类型教程保持一致。对于习惯于import cv2的经验丰富的用户来说,更改导入名称或行为也会让他们感到困惑。

opencv python的文档

appveyor ci test status(windows)travis-ci测试状态(linux和os x)

这个存储库的目的是为最常用的python版本和平台提供打包每个新的opencv版本的方法。

构建过程

该项目的结构类似于一个普通的python包,它有一个标准的setup.py文件。构建矩阵中单个条目的构建过程如下(请参见appveyor.yml文件):

  1. 签出存储库和子模块

    • opencv包含在子模块中,并且更新了版本 在新的opencv版本发布后由维护人员手动执行
    • contrib模块也包括在子模块中
  2. 从源代码中查找opencv版本

  3. 安装依赖项(numpy)

  4. 构建opencv

    • 测试被禁用,否则生成时间增加太多
    • 每个生成组合有4个生成矩阵项:有无控制模块,有无gui(无头)
    • Linux版本在ManyLinux Docker容器(CentOS 5)中运行
  5. 将每个.pyd/.so文件复制到此项目的cv2文件夹中,然后 生成轮子

    • 使用auditwheel和delocate检查linux和macos控制盘
  6. 安装生成的车轮

  7. 测试python是否可以导入库并运行一些健全性检查

  8. 使用tween将生成的控制盘上载到pypi(仅在发布版本中)

cv2.pyd/.so文件通常被复制到站点包中。为了避免污染根文件夹,这个包将静态构建的二进制文件包装到cv2包中,包中的文件正确处理导入逻辑。

由于所有包都使用上述相同的cv2名称空间,因此在从opencv python切换到opencv contrib python之前卸载另一个包。

许可

opencv python包(存储库中的脚本)在mit许可下提供。

opencv本身可以在3条bsd许可证下获得。

第三方软件包许可证位于license-3rd-party.txt

所有车轮均配有ffmpeg许可证,许可证位于lgplv2.1

Linux和MacOS Wheels随附qt 4.8.7许可证,许可证位于lgplv2.1

版本控制

find_version.py脚本从opencv源搜索版本信息,并将特定于此存储库的修订号附加到版本字符串中。

发布

当一个新的标记被推送到主分支时,发布并上传到pypi。这些标记区分了包(这个repo可能有修改,但opencv版本保持不变),应该按顺序递增。实际上,发行版本号如下:

cv_major.cv_minor.cv_revision.package_revision例如3.1.0.0

开发构建

将建立对此回购的主分支的每个提交。可能的生成工件使用本地版本标识符:

cvu major.cvu minor.cvu revision+git\u hash这个回购协议e.g.3.1.0+14a8d39

这些工件不能也不会上载到PYPI。

Manylinux车轮

Linux轮子是使用manylinux构建的。这些轮子对于大多数发行版(使用gnu c标准库)来说都是现成的,因为它们是根据glibc的旧版本构建的。

默认的manylinux图像已经用一些opencv依赖项进行了扩展。有关详细信息,请参见docker文件夹。

支持的Python版本

Python2.7是2.x系列中唯一受支持的版本。Python2.7支持将在2019年底取消。

python 3.x版本遵循numpy版本。例如,numpy不再支持python 3.3,因此在opencv python中也不再支持它了。

目前,提供了以下python版本的版本:

    2.7 < 3.4 < < > > 3.5 3.6 3.7

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Linux的java字符串命令   java parseInt和viewflipper布局问题   java正则表达式来平衡括号   mysql与数据库的Java连接   java将JFreeChart系列名称映射到系列索引   多线程如何使用信号量在Java中对哲学家进行编码?   oop特殊变量“this”如何准确地知道在JAVA程序中引用哪个对象?   Android上的java getType   当前值/单元格POI上的java Excel公式   代码中有错误(java.awt.image.RasterFormatException)   java改造2,参数转换   未找到java JSF 2 Ajax属性   JAVArmi。服务器在OpenJDK 8中,useCodebaseOnly默认为true   java如何用final实现静态?   对付Java语法冗长的最佳IDE宏工具?   java@Transactional不回滚