Skip to content

Latest commit

 

History

History
177 lines (132 loc) · 6.81 KB

api_system_devices.rst

File metadata and controls

177 lines (132 loc) · 6.81 KB

API - System Peripheral Devices

The pi-top Python SDK provides classes which represent devices, including some that can be used by generic devices, such as USB cameras. These classes are intended to simplify using these common system peripheral devices.

USB Camera

This class provides an easy way to:

  • save image and video files
  • directly access camera frames
  • process frames in the background (via callback)

It is easy to make use of some pre-written video processors, such as motion detection.

It is also possible to make use of this class to read frames from a directory of images, removing the need for a stream of images from physical hardware. This can be useful for testing, or simulating a real camera.

../examples/camera/camera_capture_video.py

By default, camera frames are of PIL.Image.Image type (using the Pillow module), which provides a standardized way of working with the image. These Image objects use raw, RGB-ordered pixels.

It is also possible to use OpenCV standard format, if desired. This may be useful if you are intending to do your own image processing with OpenCV. The OpenCV format uses raw, BGR-ordered pixels in a NumPy numpy.ndarray object. This can be done by setting the camera's format property to "OpenCV":

from pitop import Camera

c = Camera()
c.format = "OpenCV"

This can be also be done by passing the format to the camera's constructor:

from pitop import Camera

c = Camera(format="OpenCV")

Using a USB Camera to Access Image Data

../examples/camera/camera_loop_print_first_pixel.py

Using a USB Camera to Capture Video

../examples/camera/camera_capture_video.py

Adding Motion Detection to a USB Camera

../examples/camera/camera_motion_detector.py

Processing Camera Frame

../examples/camera/camera_image_processing.py

Processing Camera Frame Stream with OpenCV (Convert to grayscale)

../examples/camera/camera_image_processing_stream_opencv.py

Ball Color Detection with OpenCV

../examples/camera/camera_coloured_ball_detect.py

Class Reference: USB Camera

pitop.camera.Camera

Keyboard Button

This class makes it easy to handle a keyboard button in the same way as a GPIO-based button.

You can listen for any standard keyboard key input. For example, using a or A will provide the ability to 'listen' for the A-key being pressed - with or without shift.

Warning

This class depends on pynput, which interfaces with Xorg to handle key press events. This means that this component cannot be used via SSH, or in a headless environment (that is, without a desktop environment).

Note

The DISPLAY environment variable is required to be set in order for this component to work.

Note

If your code is being run from a terminal window, then the key presses will be captured in the terminal output. This can cause confusion and issues around reading output.

../examples/keyboard/keyboard_button.py

Class Reference: KeyboardButton

pitop.keyboard.KeyboardButton

Special Key Names

You can listen for the following special keys by passing their names when creating an instance of KeyboardButton.

Identifier Description
alt A generic Alt key. This is a modifier.
alt_l The left Alt key. This is a modifier.
alt_r The right Alt key. This is a modifier.
alt_gr The AltGr key. This is a modifier.
backspace The Backspace key.
caps_lock The CapsLock key.
cmd A generic command button.

cmd_l

The left command button. On PC keyboards, this corresponds to the Super key or Windows key, and on Mac keyboards it corresponds to the Command key. This may be a modifier.

cmd_r

The right command button. On PC keyboards, this corresponds to the Super key or Windows key, and on Mac keyboards it corresponds to the Command key. This may be a modifier.

ctrl A generic Ctrl key. This is a modifier.
ctrl_l The left Ctrl key. This is a modifier.
ctrl_r The right Ctrl key. This is a modifier.
delete The Delete key.
down A down arrow key.
up An up arrow key.
left A left arrow key.
right A right arrow key.
end The End key.
enter The Enter or Return key.
esc The Esc key.
home The Home key.
page_down The PageDown key.
page_up The PageUp key.
shift A generic Shift key. This is a modifier.
shift_l The left Shift key. This is a modifier.
shift_r The right Shift key. This is a modifier.
space The Space key.
tab The Tab key.
insert The Insert key. This may be undefined for some platforms.
menu The Menu key. This may be undefined for some platforms.
num_lock The NumLock key. This may be undefined for some platforms.
pause The Pause/Break key. This may be undefined for some platforms.
print_screen The PrintScreen key. This may be undefined for some platforms.
scroll_lock The ScrollLock key. This may be undefined for some platforms.
f1 The F1 key
f2 The F2 key
f3 The F3 key
f4 The F4 key
f5 The F5 key
f6 The F6 key
f7 The F7 key
f8 The F8 key
f9 The F9 key
f10 The F10 key
f11 The F11 key
f12 The F12 key
f13 The F13 key
f14 The F14 key
f15 The F15 key
f16 The F16 key
f17 The F17 key
f18 The F18 key
f19 The F19 key
f20 The F20 key