当我使用Python编写opencv时,我使用imread方法得到了图像对象,但是当我尝试使用该对象时,我看不到该方法的任何属性或方法。
喜欢这个
当我使用iPython或使用dir()
方法进行检查时,我可以看到它
答案 0 :(得分:3)
当PyCharm无法猜测方法返回的对象类型时会发生这种情况 - imread()
在这种情况下。某些方法根据输入返回不同类型的对象。您必须查看opencv源代码,看看为什么它不清楚返回的类型是什么。代码的静态分析检测到明显的情况
IPython已经执行了该方法,因此它清楚了返回的是什么类型
如果您知道返回的类型,一种解决方案是使用类似的类型注释:
import cv2
import numpy
# I've checked with IPython that the returned object is a `numpy.ndarray` instance
img = cv2.imread('/home/me/Pictures/image.jpg') # type: numpy.ndarray
在PEP 0484上描述了这种特征
这个PEP说它是在Python 3.5中引入的。然而,可能是PyCharm可以在比3.5更旧的Python版本中处理这个简单的情况但是我还没有检查。
这个PEP描述了typing
模块的功能,这在旧的Python版本中是不可用的,因此本文档中的大多数功能都不起作用,但我不确定PyCharm是否真的使用{{1用于解析类型注释的模块,或者本地执行它。