Mercurial Hosting > traffic-intelligence
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] |