这段代码在做什么?

2024-04-19 09:35:32 发布

您现在位置:Python中文网/ 问答频道 /正文

  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循环弄糊涂了,我对python3还很陌生?这就是-1所表示的吗?)你知道吗

无论如何,对于实例中的每个tr:自我追踪. 底部for循环在numpy float中也是这样做的阵法:p?他们为什么要使用“重塑”?那是干什么的?你知道吗

如果有人不介意的话,也许你可以帮我一把 我将不胜感激。你知道吗


Tags: inselffornpmaskparamscv2frame
1条回答
网友
1楼 · 发布于 2024-04-19 09:35:32

你知道吗自我追踪似乎是一个(n,2)list。外循环获取这些值中的每一个,将它们逐个转换为整数xy,然后使用对象mask和其他几个参数执行函数/方法cv2.circlecontainer[-1]表示需要container的最后一个索引的值。你知道吗

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

然后从p的重塑中提取新的(浮点值)xy,并作为一对追加回列表self.tracks。你知道吗

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

newshape : int or tuple of ints

The new shape should be compatible with the original shape. If an >integer, then the result will be a 1-D array of that length. One shape >dimension can be -1. In this case, the value is inferred from the length of >the array and remaining dimensions.

相关问题 更多 >