>> Gulf of Mexico, Corpus Christi, Surfing and Sea Life


VIDEO FEED DISPATCH

Mission Objective: Document and analyze the cleanup effort at Corpus Christi’s beach, focusing on turtle-borne trash ingestion patterns.

The Hardware & The Hack

The Pirates in Teepees’ Trash Tracker 3000, a bespoke surveillance system utilizing an old Raspberry Pi 3 Model B+ (RPI) as its brain. We paired it with a Logitech C270 webcam for high-definition video capture and processing.

Build Specifications:

  • RPI CPU: quad-core Cortex-A53 @ 1.4 GHz
  • RAM: 1 GB LPDDR2 SDRAM
  • Storage: SanDisk Ultra Fit USB drive (128GB)
  • Camera: Logitech C270, 720p resolution @ 30fps

We employed the OpenCV 3.4 library for real-time object detection and tracking of turtle-borne debris.

Fabrication Steps:

  1. Printed a custom camera mount using our in-house 3D printer (Prusa i3 MK2) with PLA filament.
gcode -d /home/pi/TurtleCam.gco

Run the following command to update firmware:

sudo rpi-update
reboot

Wiring and Power:

  • Camera feed connected via HDMI-to-USB adapter, powered by a 5V USB cable.
  • RPI board’s power supply: 5V @ 2A.

Telemetry & Field Analysis

We deployed the TurtleCam system at approximately 14:30 hours, just as a group of volunteers from the local marine conservation society arrived to clean up the beach. Upon analyzing the captured footage, we observed:

  • Diamond-shaped marks on plastic debris – turtle bites!
  • Ingestion patterns consistent with previously documented research.
  • High correlation between trash and sea life entanglement incidents.

Analyzing Video Feed:

To extract relevant data from the video feed, I used OpenCV 3.4’s Python API:

import cv2

# Load pre-trained YOLOv3 model for object detection
net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg")

while True:
    # Capture frame-by-frame
    ret, frame = cap.read()

    if not ret:
        break

    # Detect objects within the frame using YOLOv3 model
    outputs = net.forward(frame)

    # Loop through detected objects and display their bounding boxes
    for output in outputs[0]:
        score = output[5:]
        class_id = np.argmax(score)
        confidence = score[class_id]

        if confidence > 0.5:
            label = f"{classes[class_id]}: {confidence:.2f}"

            # Draw a rectangle around the detected object
            cv2.rectangle(frame, (int(x), int(y)), (int(x + w), int(y + h)),
                          COLOR_BGR2RGB(255, 0, 0).tolist(), 2)

    # Display processed frame and exit on key press
    cv2.imshow("Video Feed", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

Next Steps:

  1. Collaborate with marine biologists to analyze the collected data.
  2. Integrate machine learning algorithms for improved object detection and classification accuracy.

Stay tuned for further updates from Pirates in Teepees’ Trash Tracker 3000!

Additional Resources:

BABS Optical Frame Telemetry visual capture // Node Optical Sensor

BABS Optical Frame Telemetry visual capture // Node Optical Sensor

BABS Optical Frame Telemetry visual capture // Node Optical Sensor


Embedded Transmission