这是COCO RLE掩码的示例-https://pastebin.com/ZhE2en4C
它是YOLOv 8验证运行的输出,取自生成的predictions.json文件。
我正在尝试用JavaScript解码这个字符串并将其呈现在画布上。编码的字符串是有效的,因为在python中我可以这样做:
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)
字符串
我能看到解码的面具。
有没有一个库可以用来在JavaScript中解码相同的字符串并将其转换为Image
?我试着深入挖掘pycocotools的源代码,但我做不到。
1条答案
按热度按时间3pvhb19x1#
您可以在画布上绘制蒙版,然后根据需要导出图像。
对于实际绘图,可以使用两种方法:
1.将RLE解码为二进制掩码,然后根据该掩码绘制像素
1.直接从虚拟画布上的RLE字符串绘制蒙版,然后将其旋转90度并水平翻转
以下是两者的示例(以全页模式打开以查看缩放结果):
字符串