给我一个python代码用cv2的方法将一个文件夹下的所有含有坐标信息的json文件,转化为可用于分割训练的标签二值化黑白png图片且命名方式不变
时间: 2023-04-03 09:01:24 浏览: 174
语义分割json数据转图片png数据训练
以下是一个可能的 Python 代码示例,可以将一个文件夹下的所有含有坐标信息的 JSON 文件转化为可用于分割训练的标签二值化黑白 PNG 图片:
```python
import os
import json
import cv2
import numpy as np
# 定义函数,将一个 JSON 文件转化为二值化黑白 PNG 图片
def json_to_png(json_path, png_path):
with open(json_path, 'r') as f:
data = json.load(f)
img = np.zeros((data['imageHeight'], data['imageWidth']), dtype=np.uint8)
for shape in data['shapes']:
pts = np.array(shape['points'], dtype=np.int32)
cv2.fillPoly(img, [pts], 255)
cv2.imwrite(png_path, img)
# 遍历文件夹,将所有含有坐标信息的 JSON 文件转化为二值化黑白 PNG 图片
folder_path = 'path/to/folder'
for filename in os.listdir(folder_path):
if filename.endswith('.json'):
json_path = os.path.join(folder_path, filename)
png_path = os.path.join(folder_path, os.path.splitext(filename)[] + '.png')
json_to_png(json_path, png_path)
```
这个代码假设 JSON 文件中的坐标信息是用 COCO 格式存储的,即包含以下字段:
- "imageHeight": 图片高度
- "imageWidth": 图片宽度
- "shapes": 一个列表,每个元素表示一个多边形区域,包含以下字段:
- "points": 一个列表,每个元素表示一个点的坐标,形如 [x, y]
如果你的 JSON 文件格式不同,需要相应地修改代码。
阅读全文