Opencv / numpy问题:“针对API版本X编译的模块,但这个版本的numpy是Y”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Opencv / numpy问题:“针对API版本X编译的模块,但这个版本的numpy是Y”相关的知识,希望对你有一定的参考价值。

我是opencv世界的新手,几天前我试图安装它。我安装了所有内容并将cv2文件从opencv移动到python 2.7。我厌倦了两个文件,但我现在都有错误,我正在尝试使用文件夹x86中的文件cv2。每当我import cv2我有这个错误:

RuntimeError: module compiled against API version 0xa but this version of numpy is 0x9

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import cv2
ImportError: numpy.core.multiarray failed to import

我尝试了一切,安装numpy 1.8重新安装它,重新安装其他版本的python,添加文件到环境变量,我被困在这里几乎一周。此外,我已经下载了cygwin64但是在我删除python 3之后(或者它可能是巧合)现在它没有找到任何命令,如pip install等等。如果有人可以帮助我,我会非常感激。

答案

Numpy为C API使用单独的版本号。每当对C API进行任何更改时,此数字都会增加(无论二进制兼容性是否被破坏)。由于更改很少,因此Numpy版本和C API版本之间没有1:1映射。

该错误消息表明,与最初构建的OpenCV相比,您有一个Numpy版本提供了较旧版本的C-API。

有一个方便的table in the source code。由于它有点难以找到,让我在这里重现它:

C API Version | Numpy Version
0x00000008    - 1.7.x
0x00000009    - 1.8.x
0x00000009    - 1.9.x
0x0000000a    - 1.10.x
0x0000000a    - 1.11.x
0x0000000a    - 1.12.x
0x0000000b    - 1.13.x
0x0000000c    - 1.14.x
0x0000000c    - 1.15.x
0x0000000d    - 1.16.x

注意:上次更新时间为2019-04-11。

根据该表,您应该将Numpy升级到以下任何版本:1.10.x,1.11.x,1.12.x

另一答案

这需要一些时间,但我终于找到了一个API版本与numpy版本的表格。基于此,我会说你需要numpy 1.10.x或1.11.x或1.12.x. - DanMašek

以上是关于Opencv / numpy问题:“针对API版本X编译的模块,但这个版本的numpy是Y”的主要内容,如果未能解决你的问题,请参考以下文章

RuntimeError:针对 API 版本 a 编译的模块,但这个版本的 numpy 是 9

RuntimeError:针对 API 版本 0xc 编译的模块,但这个版本的 numpy 是 0xb

Numpy 和 OpenCV

安装 opencv 后 Numpy.core.multiarray 不再工作

使用 openCV 从 numpy 数组生成视频

导入opencv并获取numpy.core.multiarray导入失败