我正在OpenCV中处理一些视频,该视频当然会将帧作为二维numpy数组处理。我想迭代搜索特定像素周围的区域。我不想按列然后按行进行迭代,而是想通过蛇形正方形模式遍历值。我将在下面说明。
X是我们开始环顾四周的像素。
000 100 110 111 111 111
0x0 > 0x0 > 0x0 > 0x0 > 0x1 > 0x1
000 000 000 000 000 001
如您所见,它将继续在起点附近弯曲,直到到达起点所在的列。此时,它应该再向左延伸一列,并开始在数组中向上移动。这不会是无限的迭代,但是当一定数量的角值与给定值匹配时,它将停止运行。
到目前为止,我已经能够遍历数组,但是我不确定如何告诉它在迭代过程中动态变化的某个点停止。
def search_local_area(area, start_pt):
"""Search the area around the pixel identified as a 'good point' in a roundabout-square."""
test = np.zeros_like(area)
for row, _ in enumerate(area[..., start_pt]):
for column, value in enumerate(area[start_pt, ...]):
test[row, column] = value
上面的代码只是将值复制到测试数组中,以表明它在正确的方向上进行迭代。