给我一个python代码用cv2的方法将一个文件夹下的所有含有坐标信息的json文件,转化为可用于分割训练的标签二值化黑白png图片且命名方式不变
时间: 2023-04-03 16:01:22 浏览: 68
以下是一个可能的 Python 代码示例,可以将一个文件夹下的所有含有坐标信息的 JSON 文件转化为可用于分割训练的标签二值化黑白 PNG 图片,命名方式不变:
```python
import os
import cv2
import json
json_folder = "path/to/json/folder"
png_folder = "path/to/png/folder"
for filename in os.listdir(json_folder):
if filename.endswith(".json"):
json_path = os.path.join(json_folder, filename)
with open(json_path, "r") as f:
data = json.load(f)
img = cv2.imread(data["image_path"], cv2.IMREAD_GRAYSCALE)
mask = np.zeros_like(img)
for obj in data["objects"]:
if obj["classTitle"] == "person":
points = obj["points"]["exterior"]
points = np.array(points, np.int32)
cv2.fillPoly(mask, [points], 255)
png_path = os.path.join(png_folder, os.path.splitext(filename)[] + ".png")
cv2.imwrite(png_path, mask)
```
这个代码假设 JSON 文件的格式类似于 Labelbox 的导出格式,包含一个 `image_path` 字段和一个 `objects` 列表,每个对象包含一个 `classTitle` 字段和一个 `points` 字段,其中 `points` 是一个包含多个点的列表,表示对象的轮廓。这个代码只处理 `classTitle` 为 "person" 的对象,将它们的轮廓用黑色填充到一个空白的掩膜上,最后将掩膜保存为 PNG 图片。如果需要处理其它类别的对象,可以根据需要修改代码。