opencv python绑定的包装程序包。

opencv-contrib-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. 在打开新问题之前,请阅读下面的常见问题解答,并查看已打开的其他问题。

  6. < > >

    常见问题

    问:我是否也需要单独安装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上导入失败,请确保已导入Visual C++可再发行2015已安装。如果您使用的是比Windows 10旧的Windows版本,并且未安装最新的系统更新,Universal C Runtimemi这也是必需的。

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

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

    如果在检查完之前的所有解决方案后仍然遇到错误,下载依赖项,然后打开cv2.pyd(通常位于c:\ users\username\appdata\local\programs\pythonxx\lib\site packages\cv2)文件,用它调试缺少的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测试状态(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(仅在发布版本中)

    9. < > >

      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第三方库


热门话题
io如何从java中的远程FileInputStream中知道扩展名为的文件名   java spring引导不会为JSP返回404,除非编译tomcat maven依赖范围?   ArchUnit:如何避免对java类的依赖冲突   java Hibernate很多都不工作   java tomcat基于表单的身份验证数据源配置错误   java将随机对象声明为私有静态最终属性可以吗?   java Sobel筛选器无法正常工作   我想用java为hangman乘以一个字符串   当我试图运行部署在Tomcat中的任何项目时,ubuntu上的java Tomcat服务器将自动关闭   java更高效地读取按字母顺序排序的文本文件   java Android Studio“尚未附加片段”   在JavaServlet中使用从一种形式到另一种形式的数据的html   检测Java中打开的文件夹(JNativeHook)   jakarta ee Hibernate映射异常:实体映射中的重复列   httpSession在Java中使用什么方法进行会话管理   java如何将两个类的代码外包到一个新的类中,以便两个类都可以调用该方法