Windows 中 OpenCV-Python 的自动完成功能不起作用

Posted

技术标签:

【中文标题】Windows 中 OpenCV-Python 的自动完成功能不起作用【英文标题】:Autocomplete for OpenCV-Python in Windows not working 【发布时间】:2013-09-11 09:34:12 【问题描述】:

我无法在 Windows 上为 OpenCV (Python) 获得自动完成功能。

按照阿比德的指示here,我将cv2.pyd文件粘贴到了C:\Python27\Lib\site-packages中。

在Python代码中,我导入如下:

import cv2.cv as cv

我还安装了 numpy,它在站点包中创建了自己的文件夹,这与 OpenCV(我直接粘贴到站点包中)不同。

使用此设置,即使调用 OpenCV 方法,代码也可以毫无问题地执行。

但我无法让自动完成功能正常工作。我试图让它在 Sublime Text 2(使用 SublimeCodeIntel)和 PyCharm 上工作。在这两个 IDE 中,自动完成功能适用于 numpy 导入,但无法用于 OpenCV 导入。

我使用的是 OpenCV 2.4.6 和 Python 2.7(32 位)。

任何可能的解决方案?

【问题讨论】:

PyCharm 不支持是因为known bug。 啊。已知问题 FTW。但是,如果我只是在 PyCharm 中说 import cv2,它确实向我展示了该库的一些自动完成项。当然,这不能正确执行。但是,考虑到 .pyd 文件就像 .dll 一样,自动完成功能又是如何显示的呢? 【参考方案1】:

它不起作用的原因是因为您使用的是.pyd 文件,即essentially the same as a compiled .dll。自动完成功能通过读取源 .py 文件(纯文本)来工作。尝试从 Christoph Gohlke 的 Python Extension Packages for Windows 存储库安装 OpenCV 和英特尔数学内核库优化的 NumPy 软件包,该存储库经常更新,对于在 Windows 上进行任何类型的科学 Python 计算的任何人来说都是必备资源。确保首先从site-packages 中删除cv2.pydnumpy 目录。这些新包将安装 Sublime Text 中自动完成引擎所需的 .py 源文件。


编辑

好的,所以我写了上面的内容,因为它适用于许多其他包。我是一个 Python 3 人,我从来没有从 Gohlke 安装过 OpenCV,因为它只有 Python 2 绑定。在阅读了下面@CrazyCoder 的comment 之后,我启动了Win7,确实他是绝对正确的(我之前应该意识到这一点)——因为OpenCV 是用C/C++ 编写的,所以Gohlke 包中包含的唯一.py 文件是cv.py,其全部内容如下:

from cv2.cv import *

其余的包含在cv2.pyd 和一堆.dlls 中。来自opencv.org 的完整 OpenCV Windows 发行版是一个 291 MB 的下载文件,可扩展至 3 GB,其中的少数.py 文件涉及构建 OpenCV,对于自动完成目的没有任何好处。所以,不幸的是,我不知道目前是否有解决您的问题的方法。只需将docs 放在手边,也许可以查看2013 年4 月发布的Packt/O'Reilly 中的OpenCV Computer Vision with Python。

【讨论】:

这无济于事,至少对 PyCharm 没有帮助。您链接中的二进制 OpenCV 安装程序不会安装任何源。 麻烦。你是对的,出于某种原因,OpenCV 包 is 只是二进制文件,但 NumPy 包括源代码和二进制文件。我想这是因为大多数(如果不是全部)OpenCV 是用 C/C++ 编写的,而大多数 NumPy 是 Python,尽管它在 C 和 Fortran 中确实有一些功能。让我看看能不能找到解决方法... 无赖。感谢您付出努力来确定这是否可行。【参考方案2】:

在 Windows 上构建自定义版本的 OpenCV 时,我遇到了与 PyCharm 相同的问题。这是我为修复它所做的:

OpenCV 在 Python site-packages 中创建了一个文件夹,如下所示: opencv site-packages

所以您只需将python-3.9 文件夹添加到您的解释器即可。

文件 设置... Python 解释器 解释器旁边的三个点图标 -> 全部显示... 选择您的解释器并点击“显示所选解释器的路径”图标 在 cv2 站点包中添加文件夹

现在正常导入cv2模块。

【讨论】:

以上是关于Windows 中 OpenCV-Python 的自动完成功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章

opencv-python下简单KNN分类识别

将 GPU 与 opencv-python 一起使用

opencv-python imshow在mac中给出错误

《Nuitka打包实战指南》实战打包OpenCV-Python

《Nuitka打包实战指南》实战打包OpenCV-Python

OpenCV-Python2.NumPy的简单操作