Ceci est un exemple de masque COCO RLE - https://pastebin.com/ZhE2en4C
Il s'agit du résultat de l'exécution de validation YOLOv8, extrait du fichier Predictions.json généré.
J'essaie de décoder cette chaîne en JavaScript et de la restituer sur le canevas. La chaîne encodée est valide car en python je peux faire ceci :
from pycocotools import mask as coco_mask from PIL import Image example_prediction = { "image_id": "102_jpg", "category_id": 0, "bbox": [153.106, 281.433, 302.518, 130.737], "score": 0.8483, "segmentation": { "size": [640, 640], "counts": "<RLE string here>" } } def rle_to_bitmap(rle): bitmap = coco_mask.decode(rle) return bitmap def show_bitmap(bitmap): img = Image.fromarray(bitmap.astype(np.uint8) * 255, mode='L') img.show() input("Press Enter to continue...") img.close() mask_bitmap = rle_to_bitmap(example_prediction["segmentation"]) show_bitmap(mask_bitmap)
Je peux voir le masque décodé.
Existe-t-il une bibliothèque qui peut être utilisée pour décoder la même chaîne en JavaScript et la convertir en Image
? J'ai essayé de fouiller dans le code source de pycocotools mais je n'ai pas pu.
Vous pouvez dessiner le masque sur la toile puis exporter l'image si nécessaire.
Pour le dessin proprement dit, vous pouvez utiliser deux méthodes :
Voici des exemples des deux :