Python 这段代码在做什么?

Python 这段代码在做什么?,python,python-3.x,opencv,numpy,computer-vision,Python,Python 3.x,Opencv,Numpy,Computer Vision,我被这些for循环弄糊涂了,我对Python3还很陌生。从我收集的信息来看,它是第一步通过每个tr的x,y值(从末尾开始?这就是-1所表示的吗?) 无论如何,对于实例中的每个tr:self.tracks。循环的底部在numpy float数组中执行相同的操作:p?他们为什么要使用“重塑”?那是干什么的 如果有人不介意的话,也许可以帮我穿过它 非常感谢。self.tracks似乎是一个(n,2)列表。外部循环获取这些值中的每一个,将它们逐个转换为整数x和y,然后执行函数/方法cv2。使用对象掩码和

我被这些for循环弄糊涂了,我对Python3还很陌生。从我收集的信息来看,它是第一步通过每个tr的x,y值(从末尾开始?这就是-1所表示的吗?)

无论如何,对于实例中的每个tr:self.tracks。循环的底部在numpy float数组中执行相同的操作:p?他们为什么要使用“重塑”?那是干什么的

如果有人不介意的话,也许可以帮我穿过它
非常感谢。

self.tracks似乎是一个(n,2)
列表。外部循环获取这些值中的每一个,将它们逐个转换为整数
x
y
,然后执行函数/方法
cv2。使用对象
掩码
和几个其他参数圆
container[-1]
表示您需要
container
的最后一个索引的值

函数/方法
goodFeaturesToTrack
的值被分配给
p
(似乎是一个数组或
None
**
表示
功能参数
是一个参数字典(如果函数定义为
myfunc(a,b=2,c=3,d=5)
您可以为此更改其中一些值 通过调用myfunc(“a的值,**mydict)
调用函数,mydict是一个字典,包含零个或多个可选变量a、b和c(例如
mydict={'b':8,
d
:0}
将b和d分别从默认值更改为8和0)

然后从p的重塑中提取一个新的(浮点值)
x
y
,并将其作为一对附加回列表
self.tracks

整形中的-1表示您不关心给定轴的长度,只要另一个轴具有正确的形状。例如,一个包含10个值的数组将被整形为(5,2)一个(4,4)将被整形为(8,2)等。这可以通过搜索找到:

新闻形状:int或int的元组

新形状应与原始形状兼容。如果是>整数,则结果将是该长度的一维数组。一个形状>维度可以是-1。在这种情况下,该值是从>数组的长度和剩余维度推断出来的


有一些对象未在提供的示例中描述,因此很难理解此代码是关于什么的…
[-1]
表示列表中最后一个元素的索引。关于
numpy
模块及其功能(包括
重塑
)你可以在这里阅读:通过使用一个单独的例子,解决一个特定的问题,而不是一般的“发生了什么事?”在阅读了每个函数在api中应该执行的操作,或者检查了是否已经询问了类似的问题之后,我认为您可以避免大量的否决票。请记住,下一次。缩进是一团糟。使用
np.int32
np.float32
是不寻常的。
  for x, y in [np.int32(tr[-1]) for tr in self.tracks]:
                cv2.circle(mask, (x, y), 5, 0, -1)
            p = cv2.goodFeaturesToTrack(frame_gray, mask=mask, **feature_params)
            if p is not None:
                for x, y in np.float32(p).reshape(-1, 2):
                    self.tracks.append([(x, y)])