【发布时间】:2016-05-31 23:14:46
【问题描述】:
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)])
我对这些 for 循环感到困惑,我对 python 3 很陌生。据我所知,它首先遍历每个 tr 的 x,y 值(从最后开始?-1 表示什么?)
无论如何,对于其实例中的每个 tr:self.tracks。底部的 for 循环在 numpy 浮点数组中做同样的事情:p?他们为什么要使用“重塑”?这是在做什么?
如果有人不介意,也许只是为我一步步完成 非常感谢。
【问题讨论】:
-
有些对象在提供的示例中没有描述,所以很难理解这段代码是关于什么的……
[-1]表示列表中最后一个元素的索引。关于numpy模块及其功能(包括reshape)你可以在这里阅读:docs.scipy.org/doc/numpy-dev/user/quickstart.html -
通过使用一个独立的示例解决一个特定的问题而不是一般的“发生了什么”,并在阅读了每个函数应该在 api 中执行的操作之后,或者检查是否有什么已经有人问过类似的问题,我认为您可以避免投反对票。只是为了下次记住。
-
缩进搞砸了。使用
np.int32和np.float32是不寻常的。
标签: python python-3.x opencv numpy computer-vision