ETH数据集下载及相关问题

4 篇文章 0 订阅

ETH数据集下载

下载地址

存在问题

我尝试对其中的数据进行可视化,因为数据集给的数据是世界坐标系下的数据,我们希望在图片中进行展示,即将世界坐标系转为像素坐标系。按照H.txt中给出的但影星矩阵进行变换之后,发现了以下问题
代码如下:

class A:
    def __init__(self):
        self.h11 = 1.1048200e-02
        self.h12 = 6.6958900e-04
        self.h13 = -3.3295300e+00
        self.h21 = -1.5966000e-03
        self.h22 = 1.1632400e-02
        self.h23 = -5.3951400e+00
        self.h31 = 1.1190700e-04
        self.h32 = 1.3617400e-05
        self.h33 = 5.4276600e-01
        self.P = np.array([
            [self.h11,self.h12,self.h13],
            [self.h21,self.h22,self.h23],
            [self.h31,self.h32,self.h33]
        ])
        self.P1 = inv(self.P)

    def transform_coordinate(self, point):
        # 输入像素点,返回世界坐标
        x, y = point
        x_ = (self.h11*x + self.h12*y + self.h13)/(self.h31*x + self.h32*y + self.h33)
        y_ = (self.h21*x + self.h22*y + self.h23)/(self.h31*x + self.h32*y + self.h33)
        return (x_,y_)

    def w_to_p(self,point):
        point_ = np.append(point,1)
        p_point_ = np.matmul(self.P1,point_)
        p_point_ /= p_point_[-1]
        return p_point_[:-1]

其中transform_coordinate,w_to_p方法分别为像素坐标转世界坐标和世界坐标转像素坐标。

我们执行以下可视化代码,将obsmat.txt中的第一帧数据进行可视化

	file_path = r"./ewap_dataset/seq_hotel/obsmat.txt"
    data = pd.read_csv(file_path,header=None,sep='\s+',names=["frame_number", "human_id", "pos_x", "pos_z", "pos_y", "v_x", "v_z", "v_y" ])[["frame_number", "human_id", "pos_x", "pos_y"]]
    data1 = data[data["frame_number"]==1]
    a = A()
    w_ps = []
    for i,row in data1.iterrows():
        point = np.array([row["pos_x"], row["pos_y"]])
        w_p = a.w_to_p(point)
        w_ps.append(w_p)
    
    import cv2

    img_path = r"./ewap_dataset/seq_hotel/jpg/1.jpg"
    img = cv2.imread(img_path)  # 读取图片
    for i in w_ps:
        cv2.circle(img, (int(i[0]), int(i[1])), 10, (0, 0, 255))

输出图片如下:
在这里插入图片描述
感觉好像不太对阿……不过代码看了好多遍都没有任何问题。
根据向师姐请教发现把x,y换一下位置即可正确输出

	file_path = r"./ewap_dataset/seq_hotel/obsmat.txt"
    data = pd.read_csv(file_path,header=None,sep='\s+',names=["frame_number", "human_id", "pos_x", "pos_z", "pos_y", "v_x", "v_z", "v_y" ])[["frame_number", "human_id", "pos_x", "pos_y"]]
    data1 = data[data["frame_number"]==1]
    a = A()
    w_ps = []
    for i,row in data1.iterrows():
        point = np.array([row["pos_x"], row["pos_y"]])
        w_p = a.w_to_p(point)
        w_ps.append(w_p)
    
    import cv2

    img_path = r"./ewap_dataset/seq_hotel/jpg/1.jpg"
    img = cv2.imread(img_path)  # 读取图片
    for i in w_ps:
        cv2.circle(img, (int(i[1]), int(i[0])), 10, (0, 0, 255))

在这里插入图片描述

然后这里应该是数据给错了吧,或者是单应性矩阵给错了。个人感觉,如果有懂得大佬请指正!!

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值