‹›Traitement des images et des signauxMesures interactives d'images
DynamicImage facilite la construction d'interfaces personnalisées pour mesurer de façon interactive les objets dans les images.
Considérons la mesure du rayon d'une cellule .
Utilisez Alt en cliquant pour placer le centre d'un cercle de mesure de couleur jaune.
Déplacez le curseur pour changer le rayon du cercle .
Afficher l'entrée complète de Wolfram Language
measurementCircle[Dynamic[center_], Dynamic[r_]] := {Yellow, Thick,
Dynamic@Circle[center, r],
Dynamic@Text[
Style[StringJoin[ToString@Round@r, "px"], FontSize -> 18],
Scaled@{0.1, 0.9}, Background -> RGBColor[0, 0, 0, 0.5]]};
DynamicModule[
{center = ImageDimensions[img1]/2, r},
Manipulate[
EventHandler[
DynamicImage[
img1,
Epilog -> measurementCircle[Dynamic[center], Dynamic[r]]
],
{"MouseDown" :>
If[CurrentValue["OptionKey"],
center = MousePosition["Graphics"]]},
PassEventsDown -> Dynamic[Not[CurrentValue["OptionKey"]]]
],
{{r, 32}, 8, 800},
FrameMargins -> 0
]
]
Mesurez la longueur d'une chaîne d'ADN en la traçant manuellement.
Utilisez Alt en cliquant pour placer les sommets d'une ligne. Alt+Shift en cliquant pour supprimer le dernier sommet.
Afficher l'entrée complète de Wolfram Language
measurementLine[Dynamic[pts_], Dynamic[length_]] := {Yellow, Thick,
Dynamic@Line[pts],
Dynamic@Text[
Style[StringJoin[ToString@Round@length, "px"], FontSize -> 18],
Scaled@{0.1, 0.9}, Background -> RGBColor[0, 0, 0, 0.5]]}
DynamicModule[
{pts = {}, length = 0},
Panel@EventHandler[
DynamicImage[
img2,
Epilog -> measurementLine[Dynamic[pts], Dynamic[length]]
],
{"MouseDown" :>
If[CurrentValue["OptionKey"],
If[CurrentValue["ShiftKey"], pts = Most[pts],
AppendTo[pts, MousePosition["Graphics"]]];
length =
Total@Apply[EuclideanDistance, Partition[pts, 2, 1], {1}]]},
PassEventsDown -> Dynamic[Not[CurrentValue["OptionKey"]]]
]
]