comparison trafficintelligence/storage.py @ 1233:d5695e0b59d9

saving results from ultralytics works
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 08 Sep 2023 17:09:12 -0400
parents 83ca1493d55c
children 31173c4699d2
comparison
equal deleted inserted replaced
1232:83ca1493d55c 1233:d5695e0b59d9
8 import sqlite3, logging 8 import sqlite3, logging
9 9
10 from numpy import log, min as npmin, max as npmax, round as npround, array, sum as npsum, loadtxt, floor as npfloor, ceil as npceil, linalg, int32, int64, reshape, dot, vstack, transpose, ones, zeros_like, pi, NaN 10 from numpy import log, min as npmin, max as npmax, round as npround, array, sum as npsum, loadtxt, floor as npfloor, ceil as npceil, linalg, int32, int64, reshape, dot, vstack, transpose, ones, zeros_like, pi, NaN
11 from pandas import read_csv, merge, concat, DataFrame 11 from pandas import read_csv, merge, concat, DataFrame
12 12
13 from trafficintelligence import utils, moving, events, indicators, cvutils 13 from trafficintelligence import utils, moving, events, indicators
14 from trafficintelligence.base import VideoFilenameAddable 14 from trafficintelligence.base import VideoFilenameAddable
15 15
16 16
17 ngsimUserTypes = {'twowheels':1, 17 ngsimUserTypes = {'twowheels':1,
18 'car':2, 18 'car':2,
1305 kittiCalibration is obtained from loading training/testing calibration file for each sequence 00XX.txt 1305 kittiCalibration is obtained from loading training/testing calibration file for each sequence 00XX.txt
1306 oxts is obtained using utils.load_oxts_packets_and_poses(['./training/oxts/0001.txt']) from pykitti 1306 oxts is obtained using utils.load_oxts_packets_and_poses(['./training/oxts/0001.txt']) from pykitti
1307 1307
1308 Ref: https://github.com/pratikac/kitti/blob/master/readme.tracking.txt''' 1308 Ref: https://github.com/pratikac/kitti/blob/master/readme.tracking.txt'''
1309 from pykitti.utils import roty 1309 from pykitti.utils import roty
1310 from trafficintelligence.cvutils import cartesian2Homogeneous
1310 1311
1311 invR0 = linalg.inv(reshape(kittiCalibration['R_rect'], (3, 3))) 1312 invR0 = linalg.inv(reshape(kittiCalibration['R_rect'], (3, 3)))
1312 transCam2Velo = transpose(kittiCalibration['Tr_cam_velo']) 1313 transCam2Velo = transpose(kittiCalibration['Tr_cam_velo'])
1313 1314
1314 header = ['frame', # 0, 1, ..., n 1315 header = ['frame', # 0, 1, ..., n
1369 corners3d[1, :] = corners3d[1, :] + r.y#obj.t[1] 1370 corners3d[1, :] = corners3d[1, :] + r.y#obj.t[1]
1370 corners3d[2, :] = corners3d[2, :] + r.z#obj.t[2] 1371 corners3d[2, :] = corners3d[2, :] + r.z#obj.t[2]
1371 # corners3d = transpose(corners3d) 1372 # corners3d = transpose(corners3d)
1372 # box3d_pts_3d_velo = calib.project_rect_to_velo(box3d_pts_3d) 1373 # box3d_pts_3d_velo = calib.project_rect_to_velo(box3d_pts_3d)
1373 refCorners = transpose(dot(invR0, corners3d)) # 8x3 avoid double transpose np.transpose(pts_3d_rect))) in pts_3d_ref = self.project_rect_to_ref(pts_3d_rect) 1374 refCorners = transpose(dot(invR0, corners3d)) # 8x3 avoid double transpose np.transpose(pts_3d_rect))) in pts_3d_ref = self.project_rect_to_ref(pts_3d_rect)
1374 homRefCorners = cvutils.cartesian2Homogeneous(refCorners) 1375 homRefCorners = cartesian2Homogeneous(refCorners)
1375 veloCorners = dot(homRefCorners, transCam2Velo) 1376 veloCorners = dot(homRefCorners, transCam2Velo)
1376 # self.project_ref_to_velo(pts_3d_ref) 1377 # self.project_ref_to_velo(pts_3d_ref)
1377 # boxes3d_world_single, flag_imu, flag_world = calib_function.project_velo_to_world(bboxes_3d_velo=boxes3d_velo_single, Tr_matrix=transfer_matrix) 1378 # boxes3d_world_single, flag_imu, flag_world = calib_function.project_velo_to_world(bboxes_3d_velo=boxes3d_velo_single, Tr_matrix=transfer_matrix)
1378 #Tr_velo_to_imu = transfer_matrix['Tr_velo_to_imu'] 1379 #Tr_velo_to_imu = transfer_matrix['Tr_velo_to_imu']
1379 #Tr_imu_to_world = transfer_matrix['Tr_imu_to_world'] 1380 #Tr_imu_to_world = transfer_matrix['Tr_imu_to_world']
1380 homVeloCorners = cvutils.cartesian2Homogeneous(veloCorners) 1381 homVeloCorners = cartesian2Homogeneous(veloCorners)
1381 imuCorners = dot(kittiCalibration['Tr_velo_imu'], homVeloCorners.T).T # 8x3 1382 imuCorners = dot(kittiCalibration['Tr_velo_imu'], homVeloCorners.T).T # 8x3
1382 1383
1383 homImuCorners = cvutils.cartesian2Homogeneous(imuCorners) 1384 homImuCorners = cartesian2Homogeneous(imuCorners)
1384 worldCorners = dot(Tr_imu_to_world, homImuCorners.T).T # 8x3 1385 worldCorners = dot(Tr_imu_to_world, homImuCorners.T).T # 8x3
1385 1386
1386 # take first 4 lines of corners, x,y,_ # x0, y0, _ = boxes3d[0] 1387 # take first 4 lines of corners, x,y,_ # x0, y0, _ = boxes3d[0]
1387 xCoords = worldCorners[:4,0] 1388 xCoords = worldCorners[:4,0]
1388 yCoords = worldCorners[:4,1] 1389 yCoords = worldCorners[:4,1]
1413 corners3d = dot(R, vstack([x_corners, y_corners, z_corners])) 1414 corners3d = dot(R, vstack([x_corners, y_corners, z_corners]))
1414 corners3d[0, :] = corners3d[0, :] 1415 corners3d[0, :] = corners3d[0, :]
1415 corners3d[1, :] = corners3d[1, :] 1416 corners3d[1, :] = corners3d[1, :]
1416 corners3d[2, :] = corners3d[2, :] 1417 corners3d[2, :] = corners3d[2, :]
1417 refCorners = transpose(dot(invR0, corners3d)) # 8x3 avoid double transpose np.transpose(pts_3d_rect))) in pts_3d_ref = self.project_rect_to_ref(pts_3d_rect) 1418 refCorners = transpose(dot(invR0, corners3d)) # 8x3 avoid double transpose np.transpose(pts_3d_rect))) in pts_3d_ref = self.project_rect_to_ref(pts_3d_rect)
1418 homRefCorners = cvutils.cartesian2Homogeneous(refCorners) 1419 homRefCorners = cartesian2Homogeneous(refCorners)
1419 veloCorners = dot(homRefCorners, transCam2Velo) 1420 veloCorners = dot(homRefCorners, transCam2Velo)
1420 homVeloCorners = cvutils.cartesian2Homogeneous(veloCorners) 1421 homVeloCorners = cartesian2Homogeneous(veloCorners)
1421 imuCorners = dot(kittiCalibration['Tr_velo_imu'], homVeloCorners.T).T # 8x3 1422 imuCorners = dot(kittiCalibration['Tr_velo_imu'], homVeloCorners.T).T # 8x3
1422 1423
1423 homImuCorners = cvutils.cartesian2Homogeneous(imuCorners) 1424 homImuCorners = cartesian2Homogeneous(imuCorners)
1424 worldCorners = dot(Tr_imu_to_world, homImuCorners.T).T # 8x3 1425 worldCorners = dot(Tr_imu_to_world, homImuCorners.T).T # 8x3
1425 1426
1426 # take first 4 lines of corners, x,y,_ # x0, y0, _ = boxes3d[0] 1427 # take first 4 lines of corners, x,y,_ # x0, y0, _ = boxes3d[0]
1427 xCoords = worldCorners[:4,0] 1428 xCoords = worldCorners[:4,0]
1428 yCoords = worldCorners[:4,1] 1429 yCoords = worldCorners[:4,1]