File size: 25,796 Bytes
4854777
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "gpuType": "T4"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "mLWjwg8voVoQ",
        "outputId": "6bcef00f-e4f3-4c97-cee0-d92cf6383d3c"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (1.25.2)\n",
            "Requirement already satisfied: opencv-python in /usr/local/lib/python3.10/dist-packages (4.8.0.76)\n"
          ]
        }
      ],
      "source": [
        "pip install numpy opencv-python\n"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import cv2\n",
        "from collections import defaultdict\n",
        "\n",
        "\n",
        "# Define color ranges (in HSV)\n",
        "COLOR_RANGES = {\n",
        "    'red': ([0, 100, 100], [10, 255, 255]),\n",
        "    'blue': ([110, 100, 100], [130, 255, 255]),\n",
        "    'green': ([50, 100, 100], [70, 255, 255]),\n",
        "    'yellow': ([20, 100, 100], [30, 255, 255])\n",
        "}\n",
        "\n",
        "def process_video(video_path):\n",
        "    cap = cv2.VideoCapture(video_path)\n",
        "\n",
        "    frame_count = 0\n",
        "    ball_trackers = defaultdict(lambda: defaultdict(dict))\n",
        "    events = []\n",
        "\n",
        "    while cap.isOpened():\n",
        "        ret, frame = cap.read()\n",
        "        if not ret:\n",
        "            break\n",
        "\n",
        "        frame_count += 1\n",
        "\n",
        "        balls = detect_balls(frame)\n",
        "        update_trackers(ball_trackers, balls, frame_count)\n",
        "        new_events = check_events(ball_trackers, frame_count)\n",
        "        events.extend(new_events)\n",
        "\n",
        "    cap.release()\n",
        "    return events\n",
        "\n"
      ],
      "metadata": {
        "id": "pydVgym-odFz"
      },
      "execution_count": 4,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "def detect_balls(frame):\n",
        "    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)\n",
        "    balls = {}\n",
        "\n",
        "    for color, (lower, upper) in COLOR_RANGES.items():\n",
        "        mask = cv2.inRange(hsv, np.array(lower), np.array(upper))\n",
        "        mask = cv2.erode(mask, None, iterations=2)\n",
        "        mask = cv2.dilate(mask, None, iterations=2)\n",
        "\n",
        "        contours, _ = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)\n",
        "\n",
        "        for contour in contours:\n",
        "            if cv2.contourArea(contour) > 100:  # Minimum area threshold\n",
        "                M = cv2.moments(contour)\n",
        "                center = (int(M[\"m10\"] / M[\"m00\"]), int(M[\"m01\"] / M[\"m00\"]))\n",
        "                balls[center] = color\n",
        "\n",
        "    return balls"
      ],
      "metadata": {
        "id": "z9rpgDjOovlP"
      },
      "execution_count": 5,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "def update_trackers(trackers, balls, frame_count):\n",
        "    for center, color in balls.items():\n",
        "        if color not in trackers or all(abs(existing_center[0] - center[0]) > 20 or abs(existing_center[1] - center[1]) > 20 for existing_center in trackers[color]):\n",
        "            trackers[color][center] = {'first_seen': frame_count, 'last_seen': frame_count, 'current_quadrant': get_quadrant(center)}\n",
        "        else:\n",
        "            closest_center = min(trackers[color], key=lambda x: ((x[0] - center[0])**2 + (x[1] - center[1])**2)**0.5)\n",
        "            trackers[color][closest_center]['last_seen'] = frame_count\n",
        "            trackers[color][closest_center]['current_quadrant'] = get_quadrant(center)\n",
        "            if closest_center != center:\n",
        "                trackers[color][center] = trackers[color].pop(closest_center)\n",
        "\n",
        "def get_quadrant(center):\n",
        "    x, y = center\n",
        "    if x < 320 and y < 240:\n",
        "        return 1\n",
        "    elif x >= 320 and y < 240:\n",
        "        return 2\n",
        "    elif x < 320 and y >= 240:\n",
        "        return 3\n",
        "    else:\n",
        "        return 4"
      ],
      "metadata": {
        "id": "dPa63ZoAoz7H"
      },
      "execution_count": 6,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "def check_events(trackers, frame_count):\n",
        "    events = []\n",
        "    for color in list(trackers.keys()):\n",
        "        for center in list(trackers[color].keys()):\n",
        "            data = trackers[color][center]\n",
        "            if frame_count - data['last_seen'] > 5:  # Ball disappeared\n",
        "                events.append({\n",
        "                    'time': data['last_seen'],\n",
        "                    'quadrant': data['current_quadrant'],\n",
        "                    'color': color,\n",
        "                    'type': 'Exit'\n",
        "                })\n",
        "                del trackers[color][center]\n",
        "                if not trackers[color]:  # If this was the last ball of this color\n",
        "                    del trackers[color]\n",
        "            elif data['first_seen'] == frame_count:  # New ball appeared\n",
        "                events.append({\n",
        "                    'time': frame_count,\n",
        "                    'quadrant': data['current_quadrant'],\n",
        "                    'color': color,\n",
        "                    'type': 'Entry'\n",
        "                })\n",
        "            elif data['current_quadrant'] != get_quadrant(center):  # Ball changed quadrant\n",
        "                events.append({\n",
        "                    'time': frame_count,\n",
        "                    'quadrant': data['current_quadrant'],\n",
        "                    'color': color,\n",
        "                    'type': 'Exit'\n",
        "                })\n",
        "                data['current_quadrant'] = get_quadrant(center)\n",
        "                events.append({\n",
        "                    'time': frame_count,\n",
        "                    'quadrant': data['current_quadrant'],\n",
        "                    'color': color,\n",
        "                    'type': 'Entry'\n",
        "                })\n",
        "    return events"
      ],
      "metadata": {
        "id": "YWoyBRfHqHPJ"
      },
      "execution_count": 7,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "video_path = \"/content/sample.mp4\"\n",
        "events = process_video(video_path)\n",
        "\n",
        "# Output events\n",
        "for event in events:\n",
        "    print(f\"Time: {event['time']}, Quadrant: {event['quadrant']}, \"\n",
        "          f\"Color: {event['color']}, Type: {event['type']}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "00mLRHrOo7Q1",
        "outputId": "52d32c49-1b8e-4846-9df8-e9373624fd20"
      },
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time: 1, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 2, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 14, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 61, Quadrant: 4, Color: yellow, Type: Entry\n",
            "Time: 62, Quadrant: 4, Color: yellow, Type: Entry\n",
            "Time: 63, Quadrant: 4, Color: yellow, Type: Entry\n",
            "Time: 63, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 64, Quadrant: 4, Color: yellow, Type: Entry\n",
            "Time: 64, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 65, Quadrant: 2, Color: yellow, Type: Entry\n",
            "Time: 65, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 66, Quadrant: 2, Color: yellow, Type: Entry\n",
            "Time: 61, Quadrant: 4, Color: yellow, Type: Exit\n",
            "Time: 67, Quadrant: 2, Color: yellow, Type: Entry\n",
            "Time: 62, Quadrant: 4, Color: yellow, Type: Exit\n",
            "Time: 63, Quadrant: 4, Color: yellow, Type: Exit\n",
            "Time: 64, Quadrant: 4, Color: yellow, Type: Exit\n",
            "Time: 64, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 65, Quadrant: 2, Color: yellow, Type: Exit\n",
            "Time: 65, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 66, Quadrant: 2, Color: yellow, Type: Exit\n",
            "Time: 80, Quadrant: 2, Color: yellow, Type: Entry\n",
            "Time: 78, Quadrant: 2, Color: yellow, Type: Exit\n",
            "Time: 84, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 99, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 102, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 111, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 131, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 131, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 137, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 137, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 168, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 177, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 182, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 182, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 300, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 309, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 312, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 314, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 309, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 316, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 313, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 315, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 316, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 335, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 362, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 363, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 364, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 364, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 365, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 366, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 362, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 363, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 364, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 364, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 364, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 365, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 374, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 387, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 412, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 420, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 432, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 434, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 438, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 442, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 453, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 458, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 466, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 474, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 479, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 479, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 479, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 497, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 494, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 499, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 530, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 530, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 536, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 536, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 537, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 536, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 536, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 542, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 542, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 539, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 548, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 547, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 548, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 548, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 627, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 628, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 628, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 635, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 636, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 637, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 638, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 634, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 634, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 635, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 636, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 637, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 643, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 638, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 649, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 645, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 660, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 700, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 701, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 702, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 703, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 704, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 705, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 700, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 701, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 702, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 703, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 709, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 704, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 706, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 713, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 710, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 717, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 720, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 733, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 737, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 737, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 738, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 741, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 736, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 737, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 738, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 738, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 738, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 741, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 790, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 792, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 793, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 790, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 796, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 792, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 796, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 818, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 818, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 885, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 887, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 887, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 886, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 892, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 893, Quadrant: 2, Color: yellow, Type: Entry\n",
            "Time: 887, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 887, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 897, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 898, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 899, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 897, Quadrant: 2, Color: yellow, Type: Exit\n",
            "Time: 903, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 898, Quadrant: 2, Color: yellow, Type: Exit\n",
            "Time: 898, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 898, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 898, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 904, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 905, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 900, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 906, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 907, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 907, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 903, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 904, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 910, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 908, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 911, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 911, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 911, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 920, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 921, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 929, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 935, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 935, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 936, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 943, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 939, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 944, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 955, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 955, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1017, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1031, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1034, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1035, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1035, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1036, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1036, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1031, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1037, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1037, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1039, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1040, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1035, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1035, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1035, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1041, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1043, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1038, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1038, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1040, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1040, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1044, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1044, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1044, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1048, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1050, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1082, Quadrant: 4, Color: yellow, Type: Entry\n",
            "Time: 1083, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1083, Quadrant: 4, Color: yellow, Type: Entry\n",
            "Time: 1084, Quadrant: 4, Color: yellow, Type: Entry\n",
            "Time: 1085, Quadrant: 4, Color: yellow, Type: Entry\n",
            "Time: 1082, Quadrant: 4, Color: yellow, Type: Exit\n",
            "Time: 1083, Quadrant: 4, Color: yellow, Type: Exit\n",
            "Time: 1084, Quadrant: 4, Color: yellow, Type: Exit\n",
            "Time: 1089, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1095, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1141, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1168, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1170, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1171, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1177, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1195, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1203, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1200, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1209, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1205, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1220, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1227, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1232, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1234, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1230, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1237, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1243, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1243, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1251, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1251, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1260, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1261, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1262, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1262, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1259, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1260, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1266, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1261, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1262, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1267, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1286, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1287, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1312, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1312, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1312, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1312, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1319, Quadrant: 4, Color: yellow, Type: Entry\n",
            "Time: 1321, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1318, Quadrant: 4, Color: yellow, Type: Exit\n",
            "Time: 1319, Quadrant: 4, Color: yellow, Type: Exit\n",
            "Time: 1321, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1331, Quadrant: 2, Color: red, Type: Entry\n",
            "Time: 1332, Quadrant: 2, Color: red, Type: Exit\n",
            "Time: 1341, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1350, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1383, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1383, Quadrant: 4, Color: red, Type: Exit\n",
            "Time: 1390, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1395, Quadrant: 4, Color: red, Type: Entry\n",
            "Time: 1391, Quadrant: 4, Color: red, Type: Exit\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "ijmEcqE3Hnnl"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}