CV图像处理小工具——json文件转P格式mask

news2024/10/10 14:19:12

CV图像处理小工具——json文件转P格式mask

import cv2
import json
import numpy as np
import os


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

            # 检查JSON是否包含必要的字段
        if "shapes" not in configs or "imageHeight" not in configs or "imageWidth" not in configs:
            raise ValueError("JSON文件缺少必要的字段")

        shapes = configs["shapes"]
        image_height = configs["imageHeight"]
        image_width = configs["imageWidth"]

        png = np.zeros((image_height, image_width, 3), np.uint8)

        for shape in shapes:
            if "points" not in shape:
                raise ValueError("形状缺少点信息")
            points = np.array(shape["points"], np.int32).reshape((-1, 1, 2))  # 确保点是正确的形状
            cv2.fillPoly(png, [points], (0, 0, 255))

        return png
    except Exception as e:
        print(f"处理文件 {file_path} 时出错: {e}")
        return None

    # 硬编码的文件路径


input_directory = "H:/"  # 可以是单个文件路径或目录路径
output_directory = "H:/"

# 确保输出目录存在
if not os.path.exists(output_directory):
    os.makedirs(output_directory)

# 处理单个文件或目录中的文件
if os.path.isfile(input_directory) and input_directory.endswith(".json"):
    # 处理单个JSON文件
    input_file = input_directory
    output_file = os.path.join(output_directory, os.path.splitext(os.path.basename(input_file))[0] + ".png")
    image = func(input_file)
    if image is not None:
        cv2.imwrite(output_file, image)
else:
    # 处理目录中的JSON文件
    for file_name in os.listdir(input_directory):
        if file_name.endswith(".json"):
            input_file = os.path.join(input_directory, file_name)
            output_file = os.path.join(output_directory, os.path.splitext(file_name)[0] + ".png")
            image = func(input_file)
            if image is not None:
                cv2.imwrite(output_file, image)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2202220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【专题】2024年中国电商市场研究报告合集PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37835 在全球电商持续发展的背景下,中国电商市场面临新态势。 增长压力与机遇并存,从综合电商与直播电商发展的放缓,到企业 3C 数码商用品电商采购的趋势,以及零售业拥抱“性价比时代…

校园网站设计怎么做

校园网站设计是一项复杂而又具有挑战性的任务,因为它需要考虑到学校内各种不同的需求和利益。一个成功的校园网站应该能够满足学生、教职员工、家长和管理人员的需求,同时提供清晰、易用且富有吸引力的界面。以下是一些设计校园网站的关键方面&#xff0…

腾讯全文检索引擎 wwsearch 正式开源

背景 企业微信作为典型企业服务系统,其众多企业级应用都需要全文检索能力,包括员工通讯录、企业邮箱、审批、汇报、企业CRM、企业素材、互联圈子等。下图是一个典型的邮件检索场景。 由于过去几年业务发展迅速,后台检索架构面临挑战&#xf…

学霸都在用的秘密武器!盘点3款语音识别转文字软件,学习力MAX!

现在科技这么发达,手写笔记好像越来越不流行了。在这个什么都讲究快的时代,怎么又快又好地记下重要信息,是大家都想要的。正好,现在市面上有很多能把语音转换成文字的工具,它们特别有用,正在慢慢改变我们学…

pipe和pipefd

Linux 中 pipe 的详细介绍 在 Linux 中,pipe 是一个系统调用,用于创建一个管道,这是一种用于进程间通信(IPC)的机制。管道允许两个进程之间进行单向数据传输,通常是一个进程向管道写入数据,而另…

【机器学习】金融预测 —— 风险管理与股市预测

我的主页:2的n次方_ 在金融领域,机器学习(ML)已经成为了不可或缺的工具。金融预测,尤其是风险管理和股市预测,涉及海量数据和复杂模式的分析,而这些正是机器学习擅长处理的领域。通过分析历…

什么是矩阵系统,怎么选择矩阵系统,怎么oem贴牌,怎么源码搭建

一、架构设计方面 采用微服务架构 将矩阵系统拆分为多个小型的、独立的服务模块。每个微服务专注于特定的业务功能,如用户管理、内容发布、数据分析等。这样可以独立地开发、部署和扩展每个服务,而不会影响整个系统。例如,当用户量增加导致用…

机器学习与神经网络荣膺诺贝尔物理学奖:跨学科融合的时代来临

近日,2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者,这一消息犹如一颗重磅炸弹,迅速在全球学术界和科技界引起了轰动和热议。这是诺贝尔物理学奖首次将桂冠授予计算机科学领域的研究者,标志着物理学与计算机科学的…

dvwa:文件包含、文件上传

文件包含 本地文件包含(敏感信息泄露)和远程文件包含(命令执行) 本地文件包含一般包含一些本地的敏感文件,如:/etc/passwd或/etc/shadow等 远程文件包含能使得服务器代码执行,如包含黑客vps的…

【纯前端实现xlsx的解析并处理成table需要的格式】

概要 xlsx纯前端导入并解析成json 整体架构流程 xlsx导入并解析成json,并与table中的数据进行对比,根据唯一标识更新对应数据项 技术名词解释 vue2xlsx 技术细节 首先下载xlsx依赖 npm install xlsx --save然后在需要导入xlsx的地方 这里主要用in…

基于模型的强化学习方法4大类灌水范式

我们都知道基于模型的强化学习,就是从数据中学一个环境模型。 举个例子,我们要控制一个马达,输入就是电流,输出就是转速。无模型强化学习就是随机采样,然后从数据中直接学习输入到输出的影射,研究重心在如…

【AAOS】Android Automotive 10模拟器源码下载及编译

源码下载 repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r47 repo sync -c --no-tags --no-clone-bundle 源码编译 source build/envsetup.sh lunch aosp_car_x86_64-userdebug make -j8 运行效果 emualtor Cluster Home Map All …

大模型部署-​Ollama+WebUI

Ollama(安装包和安装文档文末领取!) Ollama 简介 主要特点: 易于使用:它提供了一个简洁的界面和命令行工具,使得用户可以方便地管理和运行不同的大语言模型。 多种模型支持:可以运行多种开源…

ip地址换网就不一样了吗?ip地址会因什么变动而变化

在当今数字化时代,IP地址作为网络设备的唯一标识,扮演着至关重要的角色。然而,对于许多用户来说,IP地址的变动仍然是一个充满疑惑的话题。那么,IP地址换网就真的不一样了吗?本文将深入探讨IP地址变动的因素…

力扣1~10题

题1(简单). 思路: 因为时间复杂度小于n^2,所以不能双for遍历,怎么优化? 这里采用一个键值对的形式,存储nums离target的间隔和它的下标,只要n,然后再遍历nums有没有刚好是这个距离的就…

SwiftUI 在 iOS 18 中的 ForEach 点击手势逻辑发生改变的解决

概述 原本在 iOS 17 中运行良好的 SwiftUI 代码突然在 iOS 18 无法正常工作了,具体表现为原来视图中的的点击手势无法响应。 这是怎么回事呢? 且看分解!Let’s go!!!😉 问题现象 从下面的演示…

自动驾驶系列—GPS技术在自动驾驶中的应用与挑战:全面解析

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

海量案例!点击洞察2024年工业数字孪生发展趋势

如果能在虚拟世界中完美复制出现实中的物体或系统,将会带来怎样的变革?数字孪生正是这样一种神奇的存在——它将物理世界中的设备或系统转化为精确的虚拟模型,通过实时数据的采集、分析与应用,创造出一个与“物理实体”完全对应的…

Apache DolphinScheduler-1.3.9源码分析(二)

引言 随着大数据的发展,任务调度系统成为了数据处理和管理中至关重要的部分。Apache DolphinScheduler 是一款优秀的开源分布式工作流调度平台,在大数据场景中得到广泛应用。 在本文中,我们将对 Apache DolphinScheduler 1.3.9 版本的源码进…

python安装第三方库的问题与解决方法

1 速度过慢 大部分第三方库都是在国外网站,如果直接使用pip install 包名,下载速度会很慢,这对一些大型包是很致命的,如果下载中断则需要重头再来。 解决方案:使用国内镜像(如清华镜像下载)&a…