Let's GO Stream

Originally published at: let’s GO Stream – BrainPad

Project Overview

BrainPad Rave Stream with Python

The BrainPad Rave Stream with Python project represents an innovative compatibility of BrainPad Microcomputers and the universal Python programming language, showcasing the BrainPad microcomputer’s ability to create a dynamic interplay between hardware and software components.

How It Works

This project shows the development of Python code capable of streaming live camera frames from a computer onto the colorful LCD screen of the BrainPad Rave microcomputer.

Hardware Requirements

The hardware requirements for this project are elegantly minimalistic, demanding only a BrainPad Rave and a standard USB cable for establishing a connection. In scenarios where the computer or laptop doesn’t have an integrated camera, we need an external USB camera to be connected to any available USB port.

Software Requirements

Executing this project successfully requires a Python version 3.10 or above. Additionally, certain crucial software components must be installed, including the CV2 library for computer vision tasks using this command:

pip install opencv-python

And The DUE Link library using the command:

pip install DUELink

Code Overview

The provided code initiates the connection with the BrainPad Rave through any available port. Subsequently, it continuously captures frames from the designated camera, resizes them to match the dimensions of the BrainPad Rave LCD screen, and converts the color type to RGBA.

The code snippet begins by establishing the BrainPad connection and accessing the camera feed through OpenCV. It clears the Rave LCD screen before initiating the streaming loop. The captured frames are resized and color-transformed, and their bytes matrix is then drawn onto the Rave LCD with a 16-bit color range.

The captured frames are then processed, converted to a matrix of bytes, and seamlessly drawn onto the Rave LCD with a 16-bit color range, transcending in a stunning real-time streaming experience.

import cv2
from DUELink.DUELinkController import DUELinkController

# Initialize BrainPad Connection
availablePort = DUELinkController.GetConnectionPort() 
BrainPad = DUELinkController(availablePort)

 # Open the camera (default laptop camera index is usually 0 / USB camera index is usually 1)
cap = cv2.VideoCapture(1)

 # Clear the LCD screen before streaming
BrainPad.Display.Clear(0)

while True:
    # Read a frame from the camera
    ret, frame = cap.read()

    if not ret:
        print("Error reading frame")
        break

    # Set the Rave LCD dimensions
    heightRave = 160
    widthRave = 120

    # Resize the frame to 160x120 (BrainPad Rave)
    frameRave = cv2.resize(frame, (heightRave, widthRave))
    # Convert the frame color form BGRA to RGBA
    frameRave = cv2.cvtColor(frameRave, cv2.COLOR_BGRA2RGBA)
    # Display the camera output on the computer screen
    cv2.imshow('Camera Output', frameRave)

    # Convert the frame to a matrix of bytes
    rave_frame_matrix = frameRave.tobytes()

    # Draw the bytes matrix on the Rave LCD with 16 bits
    BrainPad.Display.DrawBuffer(rave_frame_matrix, 16)

    # Break the loop when the 'q' key is pressed
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Release the camera and close all OpenCV windows
cap.release()
cv2.destroyAllWindows()
2 Likes