gpt4 book ai didi

带有 Numpy 数组的 Python 双端队列

转载 作者:行者123 更新时间:2023-12-05 05:03:56 24 4
gpt4 key购买 nike

我以下列方式成功运行双端队列以创建对象的轨道:

from collections import deque
...
pts = deque(maxlen=args["buffer"])
....
pts.appendleft(center)

# loop over the set of tracked points
for i in range(1, len(pts)):
# if either of the tracked points are None, ignore
# them
if pts[i - 1] is None or pts[i] is None:
continue

# otherwise, compute the thickness of the line and
# draw the connecting lines
thickness = int(np.sqrt(args["buffer"] / float(i + 1)) * 2.5)
cv2.line(frame, pts[i - 1], pts[i], (0, 0, 255), thickness)

所以每个进入 pts 的条目的格式是一组 (x,y) 并且它保持一个长度,无论“缓冲区”被设置成什么。

现在,我想跟踪一些对象,所以“center”现在是一个中心点的 numpy 数组,如下所示:

中心 = [[x1,y1],[x2,y2]]

我在使用双端队列时遇到了很多麻烦。我想做到这一点,所以 pts 也会跟踪单独的中心点到“缓冲区”的长度。

非常感谢您的帮助!

最佳答案

如果有人关注这个,我通过创建一个使用双端队列的类和方法来解决它:

    from collections import deque
import argparse
parser.add_argument('--buffer', type=int, default=64, help='buffer
size for drawing trailing path')

args = parser.parse_args()

class trackDraw():
def __init__(self):
#set up buffer size
self.pts = deque(maxlen=args.buffer)

def updatePts(self,center):
self.pts.appendleft(center)

def drawPts(self,frame, color):
for i in range(1, len(self.pts)):
if self.pts[i-1] is None or self.pts[i] is None:
continue
self.thickness = int(np.sqrt(args.buffer / float(i+1)) * 2)
cv2.line(frame, self.pts[i-1], self.pts[i], color, self.thickness)

关于带有 Numpy 数组的 Python 双端队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61427534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com