无法从 'cv2.cv2' 导入名称“_registerMatType”

cannot import name '_registerMatType' from 'cv2.cv2'

我在 运行 model_main_tf2.py 对象检测 API 时收到以下错误消息:

Traceback (most recent call last):
  File "/content/models/research/object_detection/model_main_tf2.py", line 32, in <module>
    from object_detection import model_lib_v2
  File "/usr/local/lib/python3.7/dist-packages/object_detection/model_lib_v2.py", line 29, in <module>
    from object_detection import eval_util
  File "/usr/local/lib/python3.7/dist-packages/object_detection/eval_util.py", line 36, in <module>
    from object_detection.metrics import lvis_evaluation
  File "/usr/local/lib/python3.7/dist-packages/object_detection/metrics/lvis_evaluation.py", line 23, in <module>
    from lvis import results as lvis_results
  File "/usr/local/lib/python3.7/dist-packages/lvis/__init__.py", line 5, in <module>
    from lvis.vis import LVISVis
  File "/usr/local/lib/python3.7/dist-packages/lvis/vis.py", line 1, in <module>
    import cv2
  File "/usr/local/lib/python3.7/dist-packages/cv2/__init__.py", line 9, in <module>
    from .cv2 import _registerMatType
ImportError: cannot import name '_registerMatType' from 'cv2.cv2' (/usr/local/lib/python3.7/dist-packages/cv2/cv2.cpython-37m-x86_64-linux-gnu.so)

奇怪的是我 运行 以前使用相同的代码,它运行良好,但现在它给了我一个错误。

昨天我在使用 Colab 时也遇到了同样的事情。一个可能的原因可能是opencv-python(4.1.2.30)的版本与opencv-python-headless(4.5.5.62)不匹配。或者最新的4.5.5版本可能有问题...

我卸载了 opencv-python-headless==4.5.5.62 并安装了 4.1.2.30 并修复了它。

尝试卸载并安装(版本 4.1.2.30) Headless 主模块包

!pip uninstall opencv-python-headless !pip install opencv-python-headless==4.1.2.30

我也遇到了同样的事情。我的状态:

C:\Windows\system32>pip list |findstr opencv
opencv-python                 4.5.2.52
opencv-python-headless        4.5.5.62

版本不一样。所以我先卸载headless:

pip uninstall opencv-python-headless==4.5.5.62

然后用 opencv-python 包重新安装 headless 4.5.2.52。

pip install opencv-python-headless==4.5.2.52

问题已解决。

我遇到了同样的问题,问题出在 opencv 版本控制上:

C:\Windows\system32>pip list |findstr opencv
opencv-python                 4.5.2.52
opencv-python-headless        4.5.5.62

可以看出版本不一样,先卸载headless:

pip uninstall opencv-python==4.5.2.52

然后使用 opencv-python 软件包重新安装 opencv-python 4.5.5.62:

pip install opencv-python-headless==4.5.5.62

我遇到了同样的问题并通过卸载并重新安装 opencv 解决了它。

pip uninstall opencv-python
pip install opencv-python

在我更新 opencv 之后出现了这个错误,在我的例子中

pip list | grep opencv 

显示:

opencv-contrib-python    4.5.3.56
opencv-python            4.5.5.62

我升级了opencv-contrib-python

python -m pip install --upgrade opencv-contrib-python

然后错误消失了。

以防其他人在 docker 上遇到此问题:我尝试使用版本 4.3.0.38,但在 [=16= 上找不到任何 pre-installed OpenCV ] 我正在使用的图像。使用 conda install -c conda-forge opencv=4.3.0 而不是 pip 安装包对我有用。

就我而言,以下方法是一种解决方案。

pip list | findstr opencv opencv-contrib-python 4.5.5.64 opencv-python 4.5.3.56

我在opencv贡献之前安装了opencv。 所以,我决定让他们的版本一样。

pip uninstall opencv-python==4.5.3.56 pip install opencv-python==4.5.5.64

问题解决了。 谢谢