Map in inference
This commit is contained in:
parent
1033516712
commit
212712be76
8 changed files with 6565 additions and 3219 deletions
|
@ -13,7 +13,6 @@ process_data = "trap.process_data:main"
|
|||
blacklist = "trap.tools:blacklist_tracks"
|
||||
rewrite_tracks = "trap.tools:rewrite_raw_track_files"
|
||||
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.10,<3.12,"
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -2,7 +2,7 @@
|
|||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
|
@ -15,7 +15,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
|
@ -24,7 +24,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
|
@ -42,13 +42,18 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"execution_count": 29,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from os import PathLike\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"def render_projection(src, dst, img: PathLike, points = []):\n",
|
||||
" return render_projection_frame(src, dst, cv2.imread(str(img)), points)\n",
|
||||
"\n",
|
||||
"def render_projection_frame(src, dst, frame, points = []):\n",
|
||||
" x_min = min(dst[:,0])\n",
|
||||
" if x_min < 0:\n",
|
||||
" dst[:,0] += x_min * -1\n",
|
||||
|
@ -66,7 +71,7 @@
|
|||
" H, status = cv2.findHomography(src,dst)\n",
|
||||
" f, axes = plt.subplots(1, 2, figsize=(16,8))\n",
|
||||
"\n",
|
||||
" img = cv2.imread(str(img))\n",
|
||||
" img = frame\n",
|
||||
" img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)\n",
|
||||
"\n",
|
||||
" for i, p in enumerate(src):\n",
|
||||
|
@ -97,7 +102,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
|
@ -118,7 +123,7 @@
|
|||
" [-2.89572527e-04, 1.97232411e-03, 1.00000000e+00]])"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
|
@ -141,7 +146,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
|
@ -201,7 +206,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
|
@ -240,7 +245,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"execution_count": 10,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
|
@ -251,7 +256,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
|
@ -301,7 +306,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
|
@ -346,7 +351,7 @@
|
|||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 22,
|
||||
"execution_count": 13,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
|
@ -371,6 +376,615 @@
|
|||
"print(f\"{minx} < x < {maxx}\")\n",
|
||||
"print(f\"{miny} < y < {maxy}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Expand to multiple video files"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 24,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# collect all files\n",
|
||||
"video_paths = list(Path('../DATASETS/hof/').glob(\"*.m4v\"))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 28,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"../DATASETS/hof/webcam20240110-4.m4v\n",
|
||||
"[[[101 120 129]\n",
|
||||
" [101 120 129]\n",
|
||||
" [101 120 129]\n",
|
||||
" ...\n",
|
||||
" [122 110 112]\n",
|
||||
" [121 120 100]\n",
|
||||
" [123 122 102]]\n",
|
||||
"\n",
|
||||
" [[101 120 129]\n",
|
||||
" [101 120 129]\n",
|
||||
" [101 120 129]\n",
|
||||
" ...\n",
|
||||
" [122 110 112]\n",
|
||||
" [121 120 100]\n",
|
||||
" [123 122 102]]\n",
|
||||
"\n",
|
||||
" [[100 119 128]\n",
|
||||
" [101 120 129]\n",
|
||||
" [101 120 129]\n",
|
||||
" ...\n",
|
||||
" [128 112 110]\n",
|
||||
" [128 120 101]\n",
|
||||
" [130 122 103]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[172 184 189]\n",
|
||||
" [172 184 189]\n",
|
||||
" [172 184 189]\n",
|
||||
" ...\n",
|
||||
" [149 203 245]\n",
|
||||
" [149 203 245]\n",
|
||||
" [149 203 245]]\n",
|
||||
"\n",
|
||||
" [[172 184 189]\n",
|
||||
" [172 184 189]\n",
|
||||
" [172 184 189]\n",
|
||||
" ...\n",
|
||||
" [151 203 245]\n",
|
||||
" [151 203 245]\n",
|
||||
" [151 203 245]]\n",
|
||||
"\n",
|
||||
" [[172 184 189]\n",
|
||||
" [172 184 189]\n",
|
||||
" [172 184 189]\n",
|
||||
" ...\n",
|
||||
" [151 203 245]\n",
|
||||
" [151 203 245]\n",
|
||||
" [151 203 245]]]\n",
|
||||
"../DATASETS/hof/webcam20231103-4.m4v\n",
|
||||
"[[[172 164 145]\n",
|
||||
" [172 164 145]\n",
|
||||
" [166 162 152]\n",
|
||||
" ...\n",
|
||||
" [146 125 104]\n",
|
||||
" [146 125 104]\n",
|
||||
" [146 125 104]]\n",
|
||||
"\n",
|
||||
" [[172 164 145]\n",
|
||||
" [172 164 145]\n",
|
||||
" [166 162 152]\n",
|
||||
" ...\n",
|
||||
" [146 125 104]\n",
|
||||
" [146 125 104]\n",
|
||||
" [146 125 104]]\n",
|
||||
"\n",
|
||||
" [[172 162 148]\n",
|
||||
" [172 162 148]\n",
|
||||
" [168 162 150]\n",
|
||||
" ...\n",
|
||||
" [146 125 104]\n",
|
||||
" [146 125 104]\n",
|
||||
" [146 125 104]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[194 220 232]\n",
|
||||
" [194 220 232]\n",
|
||||
" [194 220 232]\n",
|
||||
" ...\n",
|
||||
" [209 217 214]\n",
|
||||
" [209 217 214]\n",
|
||||
" [209 217 214]]\n",
|
||||
"\n",
|
||||
" [[192 222 234]\n",
|
||||
" [192 222 234]\n",
|
||||
" [192 222 234]\n",
|
||||
" ...\n",
|
||||
" [205 216 217]\n",
|
||||
" [205 216 217]\n",
|
||||
" [205 216 217]]\n",
|
||||
"\n",
|
||||
" [[193 223 235]\n",
|
||||
" [193 223 235]\n",
|
||||
" [193 223 235]\n",
|
||||
" ...\n",
|
||||
" [205 216 217]\n",
|
||||
" [205 216 217]\n",
|
||||
" [205 216 217]]]\n",
|
||||
"../DATASETS/hof/webcam20231103-2.m4v\n",
|
||||
"[[[180 173 165]\n",
|
||||
" [180 173 165]\n",
|
||||
" [180 173 165]\n",
|
||||
" ...\n",
|
||||
" [158 132 107]\n",
|
||||
" [158 132 107]\n",
|
||||
" [158 132 107]]\n",
|
||||
"\n",
|
||||
" [[180 173 165]\n",
|
||||
" [180 173 165]\n",
|
||||
" [180 173 165]\n",
|
||||
" ...\n",
|
||||
" [158 132 107]\n",
|
||||
" [158 132 107]\n",
|
||||
" [158 132 107]]\n",
|
||||
"\n",
|
||||
" [[181 174 166]\n",
|
||||
" [179 172 164]\n",
|
||||
" [180 173 165]\n",
|
||||
" ...\n",
|
||||
" [156 130 105]\n",
|
||||
" [156 130 105]\n",
|
||||
" [156 130 105]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[195 212 221]\n",
|
||||
" [195 212 221]\n",
|
||||
" [195 212 221]\n",
|
||||
" ...\n",
|
||||
" [208 213 211]\n",
|
||||
" [208 213 211]\n",
|
||||
" [208 213 211]]\n",
|
||||
"\n",
|
||||
" [[197 215 229]\n",
|
||||
" [197 215 229]\n",
|
||||
" [197 215 229]\n",
|
||||
" ...\n",
|
||||
" [206 214 213]\n",
|
||||
" [206 214 213]\n",
|
||||
" [206 214 213]]\n",
|
||||
"\n",
|
||||
" [[199 217 231]\n",
|
||||
" [199 217 231]\n",
|
||||
" [199 217 231]\n",
|
||||
" ...\n",
|
||||
" [206 214 213]\n",
|
||||
" [206 214 213]\n",
|
||||
" [206 214 213]]]\n",
|
||||
"../DATASETS/hof/webcam20231103-3.m4v\n",
|
||||
"[[[185 177 165]\n",
|
||||
" [185 177 165]\n",
|
||||
" [181 176 168]\n",
|
||||
" ...\n",
|
||||
" [156 142 135]\n",
|
||||
" [156 142 135]\n",
|
||||
" [156 142 135]]\n",
|
||||
"\n",
|
||||
" [[185 177 165]\n",
|
||||
" [185 177 165]\n",
|
||||
" [181 176 168]\n",
|
||||
" ...\n",
|
||||
" [156 142 135]\n",
|
||||
" [156 142 135]\n",
|
||||
" [156 142 135]]\n",
|
||||
"\n",
|
||||
" [[188 177 168]\n",
|
||||
" [188 177 168]\n",
|
||||
" [184 177 169]\n",
|
||||
" ...\n",
|
||||
" [156 142 135]\n",
|
||||
" [156 142 135]\n",
|
||||
" [156 142 135]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[189 225 233]\n",
|
||||
" [189 225 233]\n",
|
||||
" [189 225 233]\n",
|
||||
" ...\n",
|
||||
" [211 219 223]\n",
|
||||
" [211 219 223]\n",
|
||||
" [211 219 223]]\n",
|
||||
"\n",
|
||||
" [[197 228 225]\n",
|
||||
" [197 228 225]\n",
|
||||
" [197 228 225]\n",
|
||||
" ...\n",
|
||||
" [208 220 225]\n",
|
||||
" [208 220 225]\n",
|
||||
" [208 220 225]]\n",
|
||||
"\n",
|
||||
" [[197 228 225]\n",
|
||||
" [197 228 225]\n",
|
||||
" [197 228 225]\n",
|
||||
" ...\n",
|
||||
" [208 220 225]\n",
|
||||
" [208 220 225]\n",
|
||||
" [208 220 225]]]\n",
|
||||
"../DATASETS/hof/webcam20240619-1.m4v\n",
|
||||
"\tNo homography for ../DATASETS/hof/webcam20240619-1.m4v\n",
|
||||
"[[[106 105 115]\n",
|
||||
" [108 107 117]\n",
|
||||
" [112 111 121]\n",
|
||||
" ...\n",
|
||||
" [214 178 141]\n",
|
||||
" [228 187 146]\n",
|
||||
" [229 188 147]]\n",
|
||||
"\n",
|
||||
" [[105 104 114]\n",
|
||||
" [107 106 116]\n",
|
||||
" [111 110 120]\n",
|
||||
" ...\n",
|
||||
" [215 182 144]\n",
|
||||
" [228 187 146]\n",
|
||||
" [228 187 146]]\n",
|
||||
"\n",
|
||||
" [[104 103 113]\n",
|
||||
" [105 104 114]\n",
|
||||
" [109 108 118]\n",
|
||||
" ...\n",
|
||||
" [224 187 148]\n",
|
||||
" [227 187 149]\n",
|
||||
" [226 186 148]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[146 133 122]\n",
|
||||
" [146 133 122]\n",
|
||||
" [146 133 122]\n",
|
||||
" ...\n",
|
||||
" [173 214 240]\n",
|
||||
" [175 214 240]\n",
|
||||
" [175 214 240]]\n",
|
||||
"\n",
|
||||
" [[147 134 123]\n",
|
||||
" [147 134 123]\n",
|
||||
" [147 134 123]\n",
|
||||
" ...\n",
|
||||
" [177 220 234]\n",
|
||||
" [179 219 234]\n",
|
||||
" [179 219 234]]\n",
|
||||
"\n",
|
||||
" [[149 136 125]\n",
|
||||
" [149 136 125]\n",
|
||||
" [149 136 125]\n",
|
||||
" ...\n",
|
||||
" [179 218 235]\n",
|
||||
" [181 218 235]\n",
|
||||
" [181 218 235]]]\n",
|
||||
"../DATASETS/hof/webcam20240110-2.m4v\n",
|
||||
"[[[190 227 226]\n",
|
||||
" [190 227 226]\n",
|
||||
" [190 227 226]\n",
|
||||
" ...\n",
|
||||
" [173 159 152]\n",
|
||||
" [183 167 159]\n",
|
||||
" [188 172 164]]\n",
|
||||
"\n",
|
||||
" [[190 227 226]\n",
|
||||
" [190 227 226]\n",
|
||||
" [190 227 226]\n",
|
||||
" ...\n",
|
||||
" [174 160 153]\n",
|
||||
" [182 166 158]\n",
|
||||
" [186 170 162]]\n",
|
||||
"\n",
|
||||
" [[190 227 226]\n",
|
||||
" [190 227 226]\n",
|
||||
" [190 227 226]\n",
|
||||
" ...\n",
|
||||
" [183 165 155]\n",
|
||||
" [186 167 154]\n",
|
||||
" [185 166 153]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" ...\n",
|
||||
" [223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" [223 223 223]]\n",
|
||||
"\n",
|
||||
" [[224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" ...\n",
|
||||
" [223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" [223 223 223]]\n",
|
||||
"\n",
|
||||
" [[224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" ...\n",
|
||||
" [223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" [223 223 223]]]\n",
|
||||
"../DATASETS/hof/webcam20240111-2.m4v\n",
|
||||
"[[[ 62 77 100]\n",
|
||||
" [ 59 74 97]\n",
|
||||
" [ 62 77 100]\n",
|
||||
" ...\n",
|
||||
" [147 127 90]\n",
|
||||
" [150 130 93]\n",
|
||||
" [145 125 88]]\n",
|
||||
"\n",
|
||||
" [[ 75 90 113]\n",
|
||||
" [ 66 81 104]\n",
|
||||
" [ 62 77 100]\n",
|
||||
" ...\n",
|
||||
" [145 125 88]\n",
|
||||
" [147 127 90]\n",
|
||||
" [143 123 86]]\n",
|
||||
"\n",
|
||||
" [[ 83 91 108]\n",
|
||||
" [ 74 82 99]\n",
|
||||
" [ 70 78 95]\n",
|
||||
" ...\n",
|
||||
" [147 127 90]\n",
|
||||
" [150 130 93]\n",
|
||||
" [145 125 88]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[123 121 112]\n",
|
||||
" [123 121 112]\n",
|
||||
" [123 121 112]\n",
|
||||
" ...\n",
|
||||
" [177 178 165]\n",
|
||||
" [177 178 165]\n",
|
||||
" [177 178 165]]\n",
|
||||
"\n",
|
||||
" [[123 121 112]\n",
|
||||
" [123 121 112]\n",
|
||||
" [123 121 112]\n",
|
||||
" ...\n",
|
||||
" [174 172 155]\n",
|
||||
" [174 172 155]\n",
|
||||
" [174 172 155]]\n",
|
||||
"\n",
|
||||
" [[123 121 112]\n",
|
||||
" [123 121 112]\n",
|
||||
" [123 121 112]\n",
|
||||
" ...\n",
|
||||
" [172 170 153]\n",
|
||||
" [172 170 153]\n",
|
||||
" [172 170 153]]]\n",
|
||||
"../DATASETS/hof/webcam20240111-1.m4v\n",
|
||||
"[[[ 64 81 111]\n",
|
||||
" [ 61 78 108]\n",
|
||||
" [ 53 70 100]\n",
|
||||
" ...\n",
|
||||
" [151 138 86]\n",
|
||||
" [148 135 83]\n",
|
||||
" [147 134 82]]\n",
|
||||
"\n",
|
||||
" [[ 66 83 113]\n",
|
||||
" [ 62 79 109]\n",
|
||||
" [ 54 71 101]\n",
|
||||
" ...\n",
|
||||
" [151 138 86]\n",
|
||||
" [148 135 83]\n",
|
||||
" [147 134 82]]\n",
|
||||
"\n",
|
||||
" [[ 76 89 110]\n",
|
||||
" [ 72 85 106]\n",
|
||||
" [ 64 77 98]\n",
|
||||
" ...\n",
|
||||
" [151 138 86]\n",
|
||||
" [148 135 83]\n",
|
||||
" [147 134 82]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[127 126 115]\n",
|
||||
" [127 126 115]\n",
|
||||
" [127 126 115]\n",
|
||||
" ...\n",
|
||||
" [178 177 164]\n",
|
||||
" [178 177 164]\n",
|
||||
" [178 177 164]]\n",
|
||||
"\n",
|
||||
" [[127 126 115]\n",
|
||||
" [127 126 115]\n",
|
||||
" [127 126 115]\n",
|
||||
" ...\n",
|
||||
" [179 169 155]\n",
|
||||
" [178 168 154]\n",
|
||||
" [178 168 154]]\n",
|
||||
"\n",
|
||||
" [[127 126 115]\n",
|
||||
" [127 126 115]\n",
|
||||
" [127 126 115]\n",
|
||||
" ...\n",
|
||||
" [176 166 152]\n",
|
||||
" [175 165 151]\n",
|
||||
" [175 165 151]]]\n",
|
||||
"../DATASETS/hof/webcam20240110-3.m4v\n",
|
||||
"[[[174 201 215]\n",
|
||||
" [174 201 215]\n",
|
||||
" [173 200 214]\n",
|
||||
" ...\n",
|
||||
" [160 159 153]\n",
|
||||
" [163 165 158]\n",
|
||||
" [165 167 160]]\n",
|
||||
"\n",
|
||||
" [[175 202 216]\n",
|
||||
" [175 202 216]\n",
|
||||
" [174 201 215]\n",
|
||||
" ...\n",
|
||||
" [161 160 154]\n",
|
||||
" [163 165 158]\n",
|
||||
" [164 166 159]]\n",
|
||||
"\n",
|
||||
" [[178 205 219]\n",
|
||||
" [178 205 219]\n",
|
||||
" [177 204 218]\n",
|
||||
" ...\n",
|
||||
" [164 159 151]\n",
|
||||
" [165 160 152]\n",
|
||||
" [165 160 152]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" ...\n",
|
||||
" [220 223 223]\n",
|
||||
" [220 223 223]\n",
|
||||
" [220 223 223]]\n",
|
||||
"\n",
|
||||
" [[224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" ...\n",
|
||||
" [220 223 223]\n",
|
||||
" [220 223 223]\n",
|
||||
" [220 223 223]]\n",
|
||||
"\n",
|
||||
" [[224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" ...\n",
|
||||
" [220 223 223]\n",
|
||||
" [220 223 223]\n",
|
||||
" [220 223 223]]]\n",
|
||||
"../DATASETS/hof/webcam20240110-1.m4v\n",
|
||||
"[[[224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" ...\n",
|
||||
" [190 158 136]\n",
|
||||
" [197 158 137]\n",
|
||||
" [198 159 138]]\n",
|
||||
"\n",
|
||||
" [[224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" ...\n",
|
||||
" [191 159 137]\n",
|
||||
" [199 160 139]\n",
|
||||
" [199 160 139]]\n",
|
||||
"\n",
|
||||
" [[224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" ...\n",
|
||||
" [192 160 138]\n",
|
||||
" [194 159 138]\n",
|
||||
" [194 159 138]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" ...\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]]\n",
|
||||
"\n",
|
||||
" [[223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" ...\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]]\n",
|
||||
"\n",
|
||||
" [[223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" [223 223 223]\n",
|
||||
" ...\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]\n",
|
||||
" [224 224 224]]]\n",
|
||||
"../DATASETS/hof/webcam20240111-3.m4v\n",
|
||||
"[[[ 65 83 103]\n",
|
||||
" [ 60 78 98]\n",
|
||||
" [ 60 78 98]\n",
|
||||
" ...\n",
|
||||
" [152 132 90]\n",
|
||||
" [152 132 90]\n",
|
||||
" [152 132 90]]\n",
|
||||
"\n",
|
||||
" [[ 67 85 105]\n",
|
||||
" [ 62 80 100]\n",
|
||||
" [ 59 77 97]\n",
|
||||
" ...\n",
|
||||
" [151 131 89]\n",
|
||||
" [151 131 89]\n",
|
||||
" [151 131 89]]\n",
|
||||
"\n",
|
||||
" [[ 78 92 106]\n",
|
||||
" [ 70 84 98]\n",
|
||||
" [ 64 78 92]\n",
|
||||
" ...\n",
|
||||
" [151 131 89]\n",
|
||||
" [149 129 87]\n",
|
||||
" [149 129 87]]\n",
|
||||
"\n",
|
||||
" ...\n",
|
||||
"\n",
|
||||
" [[129 125 115]\n",
|
||||
" [129 125 115]\n",
|
||||
" [129 125 115]\n",
|
||||
" ...\n",
|
||||
" [177 178 167]\n",
|
||||
" [177 178 167]\n",
|
||||
" [177 178 167]]\n",
|
||||
"\n",
|
||||
" [[129 125 115]\n",
|
||||
" [129 125 115]\n",
|
||||
" [129 125 115]\n",
|
||||
" ...\n",
|
||||
" [180 174 162]\n",
|
||||
" [180 174 162]\n",
|
||||
" [180 174 162]]\n",
|
||||
"\n",
|
||||
" [[129 125 115]\n",
|
||||
" [129 125 115]\n",
|
||||
" [129 125 115]\n",
|
||||
" ...\n",
|
||||
" [179 173 161]\n",
|
||||
" [179 173 161]\n",
|
||||
" [179 173 161]]]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"for video_path in video_paths:\n",
|
||||
" print(video_path)\n",
|
||||
" video = cv2.VideoCapture(str(video_path))\n",
|
||||
" fps = video.get(cv2.CAP_PROP_FPS)\n",
|
||||
" target_frame_duration = 1./fps\n",
|
||||
" if '-' in video_path.stem:\n",
|
||||
" path_stem = video_path.stem[:video_path.stem.rfind('-')]\n",
|
||||
" else:\n",
|
||||
" path_stem = video_path.stem\n",
|
||||
" path_stem += \"-homography\"\n",
|
||||
" homography_path = video_path.with_stem(path_stem).with_suffix('.txt')\n",
|
||||
" if homography_path.exists():\n",
|
||||
" #print(f'Found custom homography file! Using {homography_path}')\n",
|
||||
" video_H = np.loadtxt(homography_path, delimiter=',')\n",
|
||||
" else:\n",
|
||||
" print(f\"\\tNo homography for {video_path}\")\n",
|
||||
"\n",
|
||||
" _, frame = video.read()\n",
|
||||
" render_projection_frame()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -67,7 +67,7 @@ def create_online_env(env, hyperparams, scene_idx, init_timestep):
|
|||
robot_type=env.robot_type)
|
||||
|
||||
|
||||
def get_maps_for_input(input_dict, scene, hyperparams):
|
||||
def get_maps_for_input(input_dict, scene, hyperparams, device):
|
||||
scene_maps = list()
|
||||
scene_pts = list()
|
||||
heading_angles = list()
|
||||
|
@ -81,15 +81,18 @@ def get_maps_for_input(input_dict, scene, hyperparams):
|
|||
heading_state_index = me_hyp['heading_state_index']
|
||||
# We have to rotate the map in the opposit direction of the agent to match them
|
||||
if type(heading_state_index) is list: # infer from velocity or heading vector
|
||||
heading_angle = -np.arctan2(x[-1, heading_state_index[1]],
|
||||
x[-1, heading_state_index[0]]) * 180 / np.pi
|
||||
# heading_angle = -np.arctan2(x[-1, heading_state_index[1]],
|
||||
# x[-1, heading_state_index[0]]) * 180 / np.pi
|
||||
heading_angle = -np.arctan2(x[heading_state_index[1]],
|
||||
x[heading_state_index[0]]) * 180 / np.pi
|
||||
else:
|
||||
heading_angle = -x[-1, heading_state_index] * 180 / np.pi
|
||||
else:
|
||||
heading_angle = None
|
||||
|
||||
scene_map = scene.map[node.type]
|
||||
map_point = x[-1, :2]
|
||||
# map_point = x[-1, :2]
|
||||
map_point = x[:2]
|
||||
|
||||
patch_size = hyperparams['map_encoder'][node.type]['patch_size']
|
||||
|
||||
|
@ -104,12 +107,14 @@ def get_maps_for_input(input_dict, scene, hyperparams):
|
|||
else:
|
||||
heading_angles = torch.Tensor(heading_angles)
|
||||
|
||||
# print(scene_maps, patch_sizes, heading_angles)
|
||||
maps = scene_maps[0].get_cropped_maps_from_scene_map_batch(scene_maps,
|
||||
scene_pts=torch.Tensor(scene_pts),
|
||||
patch_size=patch_sizes[0],
|
||||
rotation=heading_angles)
|
||||
rotation=heading_angles,
|
||||
device='cpu')
|
||||
|
||||
maps_dict = {node: maps[[i]] for i, node in enumerate(nodes_with_maps)}
|
||||
maps_dict = {node: maps[[i]].to(device) for i, node in enumerate(nodes_with_maps)}
|
||||
return maps_dict
|
||||
|
||||
|
||||
|
@ -222,6 +227,7 @@ class PredictionServer:
|
|||
init_timestep = 2
|
||||
|
||||
eval_scene = eval_env.scenes[scene_idx]
|
||||
logger.info(f"Basing online env on {eval_scene=} -- loaded from {self.config.eval_data_dict}")
|
||||
online_env = create_online_env(eval_env, hyperparams, scene_idx, init_timestep)
|
||||
|
||||
# auto-find highest iteration
|
||||
|
@ -370,8 +376,9 @@ class PredictionServer:
|
|||
|
||||
maps = None
|
||||
if hyperparams['use_map_encoding']:
|
||||
maps = get_maps_for_input(input_dict, eval_scene, hyperparams)
|
||||
# print(maps)
|
||||
maps = get_maps_for_input(input_dict, eval_scene, hyperparams, device=self.config.eval_device)
|
||||
|
||||
print(maps)
|
||||
|
||||
# robot_present_and_future = None
|
||||
# if eval_scene.robot is not None and hyperparams['incl_robot_node']:
|
||||
|
|
|
@ -6,6 +6,7 @@ import sys
|
|||
import os
|
||||
import time
|
||||
from attr import dataclass
|
||||
import cv2
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import dill
|
||||
|
@ -97,9 +98,18 @@ def process_data(src_dir: Path, dst_dir: Path, name: str, smooth_tracks: bool, c
|
|||
raise RuntimeError(f"Map image does not exists {map_img_path}")
|
||||
|
||||
type_map = {}
|
||||
# TODO)) For now, assume the map is a 100x scale of the world coordinates (i.e. 100px per meter)
|
||||
# thus when we do a homography of 5px per meter, scale down by 20
|
||||
homography_matrix = np.array([
|
||||
[5, 0,0],
|
||||
[0, 5,0],
|
||||
[0,0,1],
|
||||
]) # 100 scale
|
||||
img = cv2.imread(map_img_path)
|
||||
img = cv2.resize(img, (img.shape[1]//20, img.shape[0]//20))
|
||||
type_map['PEDESTRIAN'] = ImageMap(
|
||||
map_img_path,
|
||||
camera.H,
|
||||
img,
|
||||
homography_matrix,
|
||||
f"Map from {map_img_path.name}"
|
||||
)
|
||||
else:
|
||||
|
|
|
@ -73,21 +73,19 @@ def display_top(snapshot: tracemalloc.Snapshot, key_type='lineno', limit=5):
|
|||
|
||||
|
||||
class ImageMap(GeometricMap): # TODO Implement for image maps -> watch flipped coordinate system
|
||||
def __init__(self, image_path: Path, H_img_to_world: cv2.Mat, description=None):
|
||||
def __init__(self, img: cv2.Mat, H_world_to_map: cv2.Mat, description=None):
|
||||
# homography_matrix = np.loadtxt('H.txt')
|
||||
# homography_matrix = H_img_to_world.copy()
|
||||
# homography_matrix /= homography_matrix[2, 2] # normalise? https://github.com/StanfordASL/Trajectron-plus-plus/issues/14#issuecomment-637880857
|
||||
# homography_matrix = np.linalg.inv(homography_matrix)
|
||||
homography_matrix = np.array([
|
||||
[100, 0,0],
|
||||
[0, 100,0],
|
||||
[0,0,1],
|
||||
])
|
||||
homography_matrix = H_world_to_map
|
||||
|
||||
# RGB png image has 3 layers
|
||||
img = cv2.imread(image_path).astype(np.uint8)
|
||||
img = img.astype(np.uint8)
|
||||
# img = cv2.resize(img, (img.shape[1]//10, img.shape[0]//10))
|
||||
img_reverse = img[::-1,:,:] # origin to bottom left, instead of top-left
|
||||
layers = np.transpose(img_reverse, (2, 1, 0)) # array order: layers, x, y
|
||||
layers = layers.copy() # copy to apply negative stride
|
||||
# layers =
|
||||
|
||||
#scale 255
|
||||
|
|
Loading…
Reference in a new issue