【Python】.csv行人轨迹可视化演示2023/2/27

前言

对于一个.csv文件保存的行人轨迹,需要重新还原原始动态视频,从而直观的观察,路人之间的交互状态。
其中.csv

1020
id13
y23
x33
import numpy as np
import matplotlib.pyplot as plt
import time

plt.ion() #开启interactive mode 成功的关键函数
plt.figure(1)
t = 0
class KM(object):
    def __init__(self, fram, id, x, y):
        self.life = 1
        self.fram = fram
        self.id = id
        self.x = x
        self.y = y
        self.tra = np.array([[fram, x, y]])
        self.ismatched = False
    def uptra(self, fram, x, y):
        temp = np.array([fram, x, y])
        self.x = x
        self.y = y
        self.tra = np.append(self.tra,temp)
    def uplife(self):
        if self.ismatched ==True:
            self.life+=1
        else:
            self.life-=1
        if self.life > 3:
            self.life = 3
        elif self.life <= -1:
            self.life = -1;
data = np.genfromtxt('../data/eth/hotel/true_pos_.csv', delimiter=',')
max = np.unique(data[0,:]).size
cur_fram = 10
obs_id = []
obs = []
for i  in range(max):
    a = data[:, data[0, :] == cur_fram]
    a = a.transpose(1,0)
    for j in a:
        if j[1] in obs_id:
            n = np.where(obs_id == j[1])
            n = n[0][0]
            obs[n].uptra(j[0], j[3], j[2])
            obs[n].ismatched = True
        else:
            obs_id.append(j[1])
            c = KM(j[0],j[1], j[3], j[2])
            obs.append(c)
    for obs_ in obs:
        obs_.uplife()
        obs_.ismatched = False
        if obs_.life == -1:
            obs_id.remove(obs_.id)
            obs.remove(obs_)
    cur_fram += 10

    for obs_ in obs:
        s = obs_.tra
        if len(s) > 3:
            s = s.reshape(len(s)//3, 3)
            plt.xlim(-10, 10)
            plt.ylim(-10, 10)
            plt.plot(s[-1][1], s[-1][2], '.')
            plt.pause(1)
    if t // 10 == 1:
        t = 0
        plt.clf()
    else:
        t += 1

在这里插入图片描述
TODO:

  • 对于同一个行人轨迹的颜色相同
  • 引入帧之间连续性
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RockWang.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值