我使用的是Ubuntu 14.04。我使用Adrian Rosebrock的指南安装了OpenCV。我也使用PyCharm编写python和opencv。
我的问题是我可以使用cv2模块的代码完成,但代码完成不适用于从cv2启动的实例。示例如下所示。
按预期编写程序时没有运行时错误。这样 cap.isOpened()可以正常运行。
答案 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)