Canvas

Display movable shapes and images on any Piece with an array parameter (DMD, SLM, etc).

A coordinate calibration can be applied to the projection, allowing the shapes to be positioned in camera space rather than DMD space.

Example usage (see Getting started for more details on using Pieces in general):

import puzzlepiece as pzp
from pzp_hardware.vialux import dmd
from pzp_hardware.generic.patterning import canvas

class Canvas(canvas.Piece):
    # Subclass to set the desired camera and destination shapes
    shape = np.array((1440, 1080))
    tshape = np.array((1280, 800))

app = pzp.QApp()
puzzle = pzp.Puzzle(debug=False)
puzzle.add_piece("dmd", dmd.Piece, row=0, column=0)
puzzle.add_piece("canvas", Canvas, row=0, column=1, param_defaults={
    "destination": "dmd:image"
})
puzzle.show()
app.exec()

Requirements

This Piece has additional requirements. You will be asked to install them at runtime, or you may choose to install them ahead of time.

class pzp_hardware.generic.patterning.canvas.CanvasObject(parent=None, puzzle=None)[source]

Bases: Row

class pzp_hardware.generic.patterning.canvas.CanvasObjectROI(parent=None, puzzle=None)[source]

Bases: CanvasObject

class pzp_hardware.generic.patterning.canvas.Square(parent=None, puzzle=None)[source]

Bases: CanvasObjectROI

class pzp_hardware.generic.patterning.canvas.Triangle(parent=None, puzzle=None)[source]

Bases: Square

class pzp_hardware.generic.patterning.canvas.Circle(parent=None, puzzle=None)[source]

Bases: Square

class pzp_hardware.generic.patterning.canvas.LinesSettings(parent_piece, puzzle, custom_horizontal=False, *args, **kwargs)[source]

Bases: Popup

class pzp_hardware.generic.patterning.canvas.Lines(parent=None, puzzle=None)[source]

Bases: Square

class pzp_hardware.generic.patterning.canvas.CanvasImage(parent=None, puzzle=None)[source]

Bases: Square

class pzp_hardware.generic.patterning.canvas.AddObject(parent_piece, puzzle, custom_horizontal=False, *args, **kwargs)[source]

Bases: Popup

class pzp_hardware.generic.patterning.canvas.Callibration(parent_piece, puzzle, custom_horizontal=False, *args, **kwargs)[source]

Bases: Popup

class pzp_hardware.generic.patterning.canvas.Piece(puzzle=None, custom_horizontal=None, param_defaults=None, *args, **kwargs)[source]

Bases: Piece

Piece for displaying movable objects on a DMD/SLM/etc patterns. The “destination” param should be a string reference to an ArrayParam in the format piece_name:param_name.

../_images/pzp_hardware.generic.patterning.canvas.Piece.png
shape = array([1440, 1080])

shape of the camera image, subclass and override to set, (width, height)

tshape = array([1280,  800])

shape of the DMD/SLM/destination image, subclass and override to set, (width, height)