[copybara] Import robotpy examples (#8608)

GitOrigin-RevId: 9ba4bc3040fa7e772f5a594039e78fc6c43d114e
This commit is contained in:
PJ Reiniger
2026-02-20 18:30:35 -05:00
committed by GitHub
parent 1806cd2d78
commit 8f9fc4d1b6
136 changed files with 8989 additions and 3 deletions

View File

@@ -0,0 +1,20 @@
#!/usr/bin/env python3
#
# Copyright (c) FIRST and other WPILib contributors.
# Open Source Software; you can modify and/or share it under the terms of
# the WPILib BSD license file in the root directory of this project.
#
import wpilib
class MyRobot(wpilib.TimedRobot):
"""
This is a demo program showing the use of OpenCV to do vision processing. The image is acquired
from the USB camera, then a rectangle is put on the image and sent to the dashboard. OpenCV has
many methods for different types of processing.
"""
def __init__(self):
super().__init__()
wpilib.CameraServer.launch("vision.py:main")

View File

@@ -0,0 +1,53 @@
#
# Copyright (c) FIRST and other WPILib contributors.
# Open Source Software; you can modify and/or share it under the terms of
# the WPILib BSD license file in the root directory of this project.
#
#
# This is a demo program showing the use of OpenCV to do vision processing. The image is acquired
# from the USB camera, then a rectangle is put on the image and sent to the dashboard. OpenCV has
# many methods for different types of processing.
#
# NOTE: This code runs in its own process, so we cannot access the robot here,
# nor can we create/use/see wpilib objects
#
# To try this code out locally (if you have robotpy-cscore installed), you
# can execute `python3 -m cscore vision.py:main`
#
import cv2
import numpy as np
from cscore import CameraServer as CS
def main():
# Get the UsbCamera from CameraServer
camera = CS.startAutomaticCapture()
# Set the resolution
camera.setResolution(640, 480)
# Get a CvSink. This will capture images from the camera
cvSink = CS.getVideo()
# Setup a CvSource. This will send images back to the Dashboard
outputStream = CS.putVideo("Rectangle", 640, 480)
# Mats are very memory expensive. Lets reuse this Mat.
mat = np.zeros(shape=(480, 640, 3), dtype=np.uint8)
while True:
# Tell the CvSink to grab a frame from the camera and put it
# in the source image. If there is an error notify the output.
time, mat = cvSink.grabFrame(mat)
if time == 0:
# Send the output the error.
outputStream.notifyError(cvSink.getError())
# skip the rest of the current iteration
continue
# Put a rectangle on the image
cv2.rectangle(mat, (100, 100), (400, 400), (255, 255, 255), 5)
# Give the output stream a new image to display
outputStream.putFrame(mat)