You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入OpenCV时遇TypeError:'numpy._DTypeMeta'对象不可下标

问题:导入OpenCV时触发TypeError错误

我在物理项目中仅执行import cv2语句就出现TypeError错误,完整报错栈如下:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Input In [1], in <cell line: 8>()
      6 from scipy.fft import fftshift
      7 import imageio
----> 8 import cv2
      9 import scienceplots
     11 import matplotlib.pyplot as plt

File ~/opt/anaconda3/lib/python3.9/site-packages/cv2/__init__.py:181, in <module>
    176             if DEBUG: print("Extra Python code for", submodule, "is loaded")
    178     if DEBUG: print('OpenCV loader: DONE')
--> 181 bootstrap()

File ~/opt/anaconda3/lib/python3.9/site-packages/cv2/__init__.py:175, in bootstrap()
    172 if DEBUG: print('OpenCV loader: binary extension... OK')
    174 for submodule in __collect_extra_submodules(DEBUG):
--> 175     if __load_extra_py_code_for_module("cv2", submodule, DEBUG):
    176         if DEBUG: print("Extra Python code for", submodule, "is loaded")
    178 if DEBUG: print('OpenCV loader: DONE')

File ~/opt/anaconda3/lib/python3.9/site-packages/cv2/__init__.py:28, in __load_extra_py_code_for_module(base, name, enable_debug_print)
     26 native_module = sys.modules.pop(module_name, None)
     27 try:
--> 28     py_module = importlib.import_module(module_name)
     29 except ImportError as err:
     30     if enable_debug_print:

File ~/opt/anaconda3/lib/python3.9/importlib/__init__.py:127, in import_module(name, package)
    125             break
    126         level += 1
--> 127 return _bootstrap._gcd_import(name[level:], package, level)

File ~/opt/anaconda3/lib/python3.9/site-packages/cv2/typing/__init__.py:69, in <module>
     65 import typing
     68 if numpy.lib.NumpyVersion(numpy.__version__) > "1.20.0" and sys.version_info >= (3, 9):
--> 69     NumPyArrayGeneric = numpy.ndarray[typing.Any, numpy.dtype[numpy.generic]]
     70 else:
     71     NumPyArrayGeneric = numpy.ndarray

TypeError: 'numpy._DTypeMeta' object is not subscriptable

我已尝试卸载重装OpenCV、更新Anaconda,并用pip list检查可能冲突的包,但问题仍未解决。


解决方案

问题原因

该错误源于OpenCV的类型注解代码与高版本Numpy不兼容:Numpy 1.24+对numpy.dtype的子类化语法做了修改,而旧版OpenCV仍使用过时的numpy.dtype[...]下标写法,导致触发TypeError。

操作步骤(二选一即可)

  1. 降级Numpy到兼容版本

    • 先查看当前Numpy版本:
      pip show numpy
      
    • 降级到1.21.x版本(这个版本既满足OpenCV的版本要求,又兼容旧语法):
      pip install numpy==1.21.6
      
  2. 升级OpenCV到兼容高版本Numpy的版本

    • 执行升级命令:
      pip install --upgrade opencv-python
      

内容的提问来源于stack exchange,提问作者John Grace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:35:29