Mask图像与json文件相互转换

这篇具有很好参考价值的文章主要介绍了Mask图像与json文件相互转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

做机器学习处理图像时,需要标注图像,其中一种标注是标出图像中的某些区域,生成Mask图像或记录下这些区域的轮廓点坐标。通常,标注直接生成其中一种文件,即只生成json文件或只生成Mask图像。故在此贴出Mask图像与json文件相互转换的Python代码。


mask_to_json

import cv2
import os
import json
import sys


def func(file:str) -> dict:
    png = cv2.imread(file)
    gray = cv2.cvtColor(png, cv2.COLOR_BGR2GRAY)
    _, binary = cv2.threshold(gray,10,255,cv2.THRESH_BINARY)
    contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    dic = {"version": "5.0.1", "flags": {},"shapes":list(), "imagePath":os.path.basename(file),
            "imageHeight":png.shape[0], "imageWidth":png.shape[1]}
    for contour in contours:
        temp = list()
        for point in contour[2:]:
            if len(temp) > 1 and temp[-2][0] * temp[-2][1] * int(point[0][0]) * int(point[0][1]) != 0 and (int(point[0][0]) - temp[-2][0]) * (
                            temp[-1][1] - temp[-2][1]) == (int(point[0][1]) - temp[-2][1]) * (temp[-1][0] - temp[-1][0]):
                temp[-1][0] = int(point[0][0])
                temp[-1][1] = int(point[0][1])
            else:
                temp.append([int(point[0][0]), int(point[0][1])])
        dic["shapes"].append({"label": "result", "points":temp, "group_id": None,
                                "shape_type": "polygon", "flags": {}})

    return dic


if  __name__ == "__main__":

    if len(sys.argv) != 3:
        raise ValueError("mask文件或目录 输出路径")

    if os.path.isdir(sys.argv[1]):
        for file in os.listdir(sys.argv[1]):
            with open(os.path.join(sys.argv[2], os.path.splitext(file)[0]+".json"), mode='w', encoding="utf-8") as f:
                json.dump(func(os.path.join(sys.argv[1], file)), f)
    else:
        with open(os.path.join(sys.argv[2], os.path.splitext(os.path.basename(sys.argv[1]))[0]+".json"), mode='w', encoding="utf-8") as f:
            json.dump(func(sys.argv[1]), f)

json_to_mask

import cv2
import json
import numpy as np
import os
import sys


def func(file:str) -> np.ndarray:
    with open(file, mode='r', encoding="utf-8") as f:
        configs = json.load(f)
    shapes = configs["shapes"]

    png = np.zeros((configs["imageHeight"], configs["imageWidth"], 3), np.uint8)

    for shape in shapes:
        cv2.fillPoly(png, [np.array(shape["points"], np.int32)], (0,0,255))

    return png


if  __name__ == "__main__":

    if len(sys.argv) != 3:
        raise ValueError("json文件或目录 输出路径")

    if os.path.isdir(sys.argv[1]):
        for file in os.listdir(sys.argv[1]):
            cv2.imwrite(os.path.join(sys.argv[2], os.path.splitext(file)[0]+".png" ), func(os.path.join(sys.argv[1], file)))
    else:
        cv2.imwrite(os.path.join(sys.argv[2], os.path.splitext(os.path.basename(sys.argv[1]))[0]+".png"), func(sys.argv[1]))

使用方法:在命令行中输入

python json_to_mask.py 文件夹或json文件 输出文件夹

python mask_to_json.py 文件夹或mask图片 输出文件夹

如果输入文件夹,则会将文件夹下所有json文件或mask图片转成对应文件输出到指定路径中。文章来源地址https://www.toymoban.com/news/detail-550233.html

到了这里,关于Mask图像与json文件相互转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • npm库:mask-json 处理用户敏感词

    mask-json 处理用户敏感词

    2024年02月12日
    浏览(24)
  • Mask2Former来了!用于通用图像分割的 Masked-attention Mask Transformer

    原理https://blog.csdn.net/bikahuli/article/details/121991697 源码解析 论文地址:http://arxiv.org/abs/2112.01527 项目地址:https://bowenc0221.github.io/mask2former Mask2Former的整体架构由三个组件组成: 主干特征提取器:主干特征提取器从输入图像中提取低分辨率特征。在Mask2Former中,主干特征提取器通

    2024年02月02日
    浏览(35)
  • OpenCV制作Mask图像掩码

    一、掩膜(mask) 在有些图像处理的函数中有的参数里面会有mask参数,即此函数支持掩膜操作,首先何为掩膜以及有什么用,如下: 数字图像处理中的掩膜的概念是借鉴于PCB制版的过程,在半导体制造中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形“底片”称为掩

    2024年02月04日
    浏览(20)
  • 【python】json和字典的相互转换

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。 Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数: 在 json 的编解码过程中,Python 的原始类型与 json 类型会相互转换,具体的转化对照如下: 都是一样的,转换成功~

    2024年02月12日
    浏览(33)
  • OpenCV:绘制图像中mask的最小外接矩形

    在计算机视觉和图像处理中,我们经常需要计算直线与外接矩形边的交点。这在进行边缘检测、图像分割、目标跟踪等任务时非常有用。本文将介绍如何使用OpenCV和NumPy计算直线与外接矩形边的交点,并展示如何在实际图像中绘制直线。 使用OpenCV的findContours函数寻找图像中的

    2024年01月24日
    浏览(32)
  • python——json、字典的区别及相互转换方法

    json,是一种轻量级的数据交换格式,由JavaScript语言创建,广泛应用于网页数据交互,常见于爬虫和数据分析领域。 json格式简洁、结构清晰,存储格式为:键值对(key:value) 在python中,字典(dict)与json非常相似,都是键值对(key:value)形式。 json与字典的区别,如下表:

    2024年02月08日
    浏览(27)
  • Pytorch版Mask-RCNN图像分割实战(自定义数据集)

    目录 Mask-RCNN概述 训练自己数据步骤 工具Labelme 标注数据 源码需要改动地方 训练之后的测试结果 Mask R-CNN是一种广泛应用于目标检测和图像分割任务的深度学习模型,它是由Faster R-CNN(一种快速目标检测模型)和Mask R-CNN(一种实例分割模型)组成的。Mask R-CNN将Faster R-CNN中的

    2024年02月10日
    浏览(35)
  • OpenCV中使用Mask R-CNN实现图像分割的原理与技术实现方案

    本文详细介绍了在OpenCV中利用Mask R-CNN实现图像分割的原理和技术实现方案。Mask R-CNN是一种先进的深度学习模型,通过结合区域提议网络(Region Proposal Network)和全卷积网络(Fully Convolutional Network),实现了对图像中物体的精确分割。本文首先阐述了Mask R-CNN的原理,然后详细

    2024年02月03日
    浏览(33)
  • 3D-Resnet-50 医学图像分类(二分类任务,需要mask)训练代码-图像格式为nrrd(附带验证代码)

    img_list格式如下 E:...3.nrrd E:...3.nrrd 0 E:...4.nrrd E:...4.nrrd 1 训练代码 验证代码

    2024年02月09日
    浏览(26)
  • Python之xlsx文件与csv文件相互转换

    Python之xlsx文件与csv文件相互转换 在Python中,可以使用xlrd和csv模块来处理Excel文件和csv文件。 xlsx文件转csv文件 在2个文件之间转换,需要注意一个文件的字符转码问题。 使用第三方库pandas将xlsx文件转csv文件 csv文件转换成xlsx文件 使用pandas将csv文件转成xlsx文件

    2024年02月16日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包