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.
PIL –
pip install pillow– Instructionsskimage –
pip install scikit-image– Instructions
- 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.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:
PiecePiece 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.
- 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)