Measure distances in 2D

Example to do measurements in a 2D image. Use LMB and RMB to place the end-points.

measure distances 2d
import numpy as np
import imageio.v3 as iio
from wgpu.gui.auto import WgpuCanvas, run
import pygfx as gfx


canvas = WgpuCanvas()
renderer = gfx.renderers.WgpuRenderer(canvas)
scene = gfx.Scene()


im = iio.imread("imageio:astronaut.png")
image = gfx.Image(
    gfx.Geometry(grid=gfx.Texture(im, dim=2)),
    gfx.ImageBasicMaterial(clim=(0, 255), pick_write=True),
)
scene.add(image)

ruler = gfx.Ruler(ticks_at_end_points=True)
ruler.local.z = 0.1  # move on top of the image
scene.add(ruler)

camera = gfx.OrthographicCamera(512, 512)
camera.local.position = (256, 256, 0)
camera.local.scale_y = -1


@image.add_event_handler("click")
def event_handler(event):
    pos = np.array([*event.pick_info["index"], 0])
    if event.button == 1:
        ruler.start_pos = pos
    elif event.button == 2:
        ruler.end_pos = pos
    renderer.request_draw()


def animate():
    ruler.update(camera, canvas.get_logical_size())
    renderer.render(scene, camera)


if __name__ == "__main__":
    canvas.request_draw(animate)
    run()

Total running time of the script: (0 minutes 0.912 seconds)

Gallery generated by Sphinx-Gallery