将bbox注释信息绘制到图片上

40 篇文章 4 订阅
29 篇文章 1 订阅

这里以天池布匹数据集为例:

  • !!! 需要备份图片,因为下面的程序会覆盖掉原来的图片,替换成有bbox框的图片,但图片名不会变。
import os
import json
from PIL import Image
import cv2

train1_json_path = 'Annotations/anno_train.json'
the_image_root_path = 'defect_Images/'
the_new_image_draw_path = 'defect_Images/'
defect_name2label = {
    '破洞': 1, '水渍': 2, '油渍': 2, '污渍': 2, '三丝': 3, '结头': 4, '花板跳': 5, '百脚': 6, 
    '毛粒': 7,'粗经': 8, '松经': 9, '断经': 10, '吊经': 11, '粗维': 12, '纬缩': 13, '浆斑': 14,
     '整经结': 15, '星跳': 16, '跳花': 16,'断氨纶': 17, '稀密档': 18, '浪纹档': 18, '色差档': 18, 
     '磨痕': 19, '轧痕': 19, '修痕': 19, '烧毛痕': 19, '死皱': 20, '云织': 20,'双纬': 20, 
     '双经': 20,'跳纱': 20, '筘路': 20, '纬纱不良': 20,
}
with open(train1_json_path, 'rb') as f:
    params = json.load(f)
    for i, img_crop in enumerate(params):
        x_min, y_min, x_max, y_max = img_crop['bbox'][0], img_crop['bbox'][1], img_crop['bbox'][2], img_crop['bbox'][3]

        fname = the_image_root_path + img_crop['name']
        img = cv2.imread(fname)
        # 画矩形框
        cv2.rectangle(img, (int(x_min), int(y_min)), (int(x_max), int(y_max)), (0, 255, 0), 4)
        # 标注文本
        font = cv2.FONT_HERSHEY_SIMPLEX
        text = str(defect_name2label[img_crop['defect_name']])

        cv2.putText(img, text, (int(x_min), int(y_min - 10)), font, 2, (0, 0, 255), 1)
        cv2.imwrite(the_new_image_draw_path + img_crop['name'], img)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值