[已解决]深度学习相关:将mask图片标注转为yolov8_seg的txt标注
本帖最后由 aaqbb 于 2024-3-15 14:03 编辑求一个将png格式的标注转为yolov8的语义分割标注的python代码
png标注如下图所示,数据集是这个 (https://bj.bcebos.com/paddlex/examples/meter_reader/datasets/meter_seg.tar.gz)
https://s21.ax1x.com/2024/03/13/pFccj2D.png
yolov8 segment标注格式如下所示,相关链接 (https://docs.ultralytics.com/zh/datasets/segment/#ultralytics-yolo-format)
```
<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>
``` 这个简单,可以使用opencv把mask的轮廓找出来,再转成坐标点,最后按照自己的格式写入txt就好了
例如 img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
img_h,img_w = img.shape[:2]
contours, _ = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
approx_contours = []
for contour in contours:
epsilon = 0.001 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, True)
approx_contours.append(approx) 本帖最后由 aaqbb 于 2024-3-14 14:07 编辑
zhangcaicai 发表于 2024-3-14 13:48
这个简单,可以使用opencv把mask的轮廓找出来,再转成坐标点,最后按照自己的格式写入txt就好了
例如
那类别怎么处理呢,我这有三个类别
```
background
pointer
scale
```
大佬可以给个完整的代码吗,可以去我的悬赏贴回复(https://www.52pojie.cn/thread-1900124-1-1.html)悬赏额要多少都可以{:1_923:} 假设你已经获取了物体的轮廓坐标点[,,...],那么你需要把轮廓坐标点做归一化处理,然后你的类别有,对应的class-index是0,1,2
然后你需要把标签信息输入txt中,格式类似<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>
例子:1,x1,y1,x2,y2,x3,y3......
你提供的png图片是全黑的,并没有标注信息 zhangcaicai 发表于 2024-3-14 15:35
你提供的png图片是全黑的,并没有标注信息
有标注的,我在网上搜的说L模式的mask图就是没有颜色的
我把原来的全黑转成彩色了
https://s21.ax1x.com/2024/03/14/pFgQaRS.png 我现在还是弄imagelab 一个一个的标注。 在https://github.com/matthewkenely/mask-to-annotation找到转换代码了
页:
[1]