代码完成不适用于OpenCV和Python

时间:2017-03-29 12:22:46

标签: python opencv intellisense code-completion

我使用的是Ubuntu 14.04。我使用Adrian Rosebrock的指南安装了OpenCV。我也使用PyCharm编写python和opencv。

我的问题是我可以使用cv2模块的代码完成,但代码完成不适用于从cv2启动的实例。示例如下所示。

This one works.

But this one wouldn't.

按预期编写程序时没有运行时错误。这样 cap.isOpened()可以正常运行。

3 个答案:

答案 0 :(得分:5)

openCV python模块是底层c ++库的dynamically generated wrapper。 PyCharm依赖于python源代码的可用性来提供自动完成功能。当源代码丢失时(如在opencv情况下),pycharm将生成具有函数原型的框架文件,并依赖于自动完成但具有能力下降的文件。

因此,当您在

处自动完成时
cv2.

它可以判断模块cv2具有以下成员并提供建议。

另一方面,当你

cap = cv2.VideoCapture(file_name)

PyCharm可以判断你刚刚从cv2模块调用了一个方法并将其分配给cap,但没有关于此方法结果类型的信息,也不知道去哪里寻找建议

cap.

如果你在shell模式下尝试相同的事情,你会看到你实际期望看到的行为,因为在shell模式下实际上会内省活动对象(它会询问创建的cap对象它拥有哪些成员并提供这些作为建议)

您也可以自己编写opencv模块的存根,以便在编辑模式下启用正确的自动完成功能。

看看here

答案 1 :(得分:4)

尽管我是Window用户,但您也遇到了类似的问题。就我而言,我可以通过以下方式解决此问题:

SELECT ( SELECT SUM(...) FROM t1 ... ) +
       ( SELECT SUM(...) FROM t2 ... )  AS sum_of_tables

由于我不了解python导入模块的工作原理,因此我无法向您清楚解释为什么它可以解决问题,但是无论如何它还是可以工作的。

祝你好运。

答案 2 :(得分:0)

我在Windows 10上使用PyCharm,并且在cv2的智能感知中遇到了类似的问题。

这是我的解决方案:

  1. Pycharm>文件>管理IDE设置>恢复默认设置
  2. 重新启动Pycharm IDE
  3. 重新配置Python解释器

enter image description here

enter image description here