【问题标题】:Unresolved reference "cv2" inside cv2 (cv2.cv2)cv2 (cv2.cv2) 内未解析的引用“cv2”
【发布时间】:2026-02-07 18:35:02
【问题描述】:

我环顾四周,人们似乎有类似的问题,但没有人准确描述我的情况,对他们有用的解决方案似乎对我不起作用(或者根本没有问题的答案)。

使用pycharm,在安装opencv-pythonopencv-contrib-python 之后,我注意到import cv2 可以工作,但是当我尝试访问cv2.imread() 时,pycharm 抱怨找不到它。

于是我去了 cv2 init 文件,看起来是这样的:

import importlib

from .cv2 import *
from .data import *

# wildcard import above does not import "private" variables like __version__
# this makes them available
globals().update(importlib.import_module('cv2.cv2').__dict__)

Pycharm 在from .cv2 import * 行检测到未解析的引用,我想最后一行也会出现同样的问题 - 我尝试在 python 控制台中执行以下操作:

import cv2
print(__version__)

但我得到了一个 NameError,这似乎证实了我的怀疑。

正如我所写,我已经尝试安装 opencv-contrib-python 但这似乎没有任何作用,坦率地说我已经没有想法了。

注意事项: - 我在 Windows 10 x64 上。 - 我正在使用 Python 3.6 x64。 - 我在我的 Pycharm 项目上设置了一个虚拟环境。

【问题讨论】:

  • 不应该是print(cv2.__version__)吗?
  • 哎呀。菜鸟失误。我重试了正确的调用,它确实在控制台中工作,并且(在pycharm中)输入cv2.确实列出了各种方法,例如cv2.imread,但在我的模块中它仍然不起作用并且cv2中的init文件仍然有一个未解决的参考。什么可能导致这种差异?

标签: python opencv package python-import cv2


【解决方案1】:

我不是专家,但以下行对我有用:

import cv2.cv2 as cv2

之后似乎一切正常。自动补全也回来了

【讨论】:

    【解决方案2】:

    我发现问题是由于 cv2 的 __init__.py 导入所有内容的方式,即 globals().update() 行。

    实际上,一切正常,但由于 Pycharm 没有索引这种调用,它不会检测到命名空间是否被正确导入。因此,解决方案是忽略“错误”并且不使用自动完成。

    【讨论】:

      【解决方案3】:

      你是否通过终端安装了opencv?

      例如,像这样。

      $ pip install opencv-python
      $ pip install opencv-contrib-python
      

      我也遇到了同样的问题。

      如果你使用pycharm,你应该通过pycharm安装opencv。

      File -> Settings... -> Project interpreter -> +

      【讨论】:

      • 是的,我是通过 PyCharm 安装的。这样做是否为您解决了问题并允许 PyCharm 索引模块?这可能是由于新版本的原因,因为当我发布答案时,我仍然在 2017 年。我应该注意,我已经找到了 opencv 的替代品来满足我的需要。
      • 很抱歉我帮不上忙。我检查了 PyCharm Community Edition 2018.2PyCharm Community Edition 2017.3.3 。就我而言,cv2 的自动压缩功能仅在通过 PyCharm 安装时才起作用。
      • 切勿在同一环境中同时安装 opencv-pythonopencv-contrib-python。只安装其中之一。 opencv-python 仅包含核心模块。 opencv-contrib-python 包含核心模块和额外模块。如果两者都安装,会出现意想不到的问题。
      【解决方案4】:

      我遇到了同样的问题。您需要尝试几件事。

      1. 您只需导入 cv2 而不是 cv2.cv2。只需写 "import cv2"
      2. 如果您之前安装过任何其他库,例如 cv,请先将其卸载。
      3. 我们需要安装的库是opencv-python
      4. 您需要通过 IDE 安装它,而不是使用终端。步骤如下: 文件 -> 设置 -> (点击您的项目) -> 项目解释器 -> + -> (键入opencv-python) -> 下载并安装它 -> 现在应该可以使用了。

      【讨论】: