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

时间:2018-04-10 14:21:57

标签: python-2.7 numpy opencv

我是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等命令。 如果有人能帮助我,我会非常感激。

2 个答案:

答案 0 :(得分:5)

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

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

有一个方便的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

答案 1 :(得分:0)

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