给我一个python代码用cv2的方法将一个文件夹下的所有含有坐标信息的json文件,转化为可用于分割训练的标签二值化黑白png图片且命名方式不变
时间: 2023-04-03 08:01:08 浏览: 100
以下是可能的回答:
可以使用以下代码实现:
```python
import os
import cv2
import json
json_folder = "path/to/json/folder"
png_folder = "path/to/png/folder"
if not os.path.exists(png_folder):
os.makedirs(png_folder)
for json_file in os.listdir(json_folder):
if json_file.endswith(".json"):
with open(os.path.join(json_folder, json_file), "r") as f:
data = json.load(f)
img_name = os.path.splitext(json_file)[] + ".png"
img_path = os.path.join(png_folder, img_name)
img = cv2.imread(data["imagePath"], cv2.IMREAD_GRAYSCALE)
for shape in data["shapes"]:
points = shape["points"]
mask = cv2.fillPoly(np.zeros_like(img), [np.array(points, dtype=np.int32)], 255)
img = cv2.bitwise_or(img, mask)
cv2.imwrite(img_path, img)
```
这段代码会遍历指定的 JSON 文件夹中的所有 JSON 文件,读取其中的坐标信息和对应的图片路径,然后使用 OpenCV 的 `fillPoly` 函数将多边形区域填充为白色,最后将所有多边形区域合并为一个二值化黑白 PNG 图片,并保存到指定的 PNG 文件夹中,文件名与原 JSON 文件相同,只是扩展名变为 `.png`。
注意,这段代码仅供参考,具体实现可能需要根据实际情况进行调整。
阅读全文