验证yolo数据集合是否正确

def read_class_names():
    """
    loads class name from a file
    加载id和类别名称映射关系,文件中是每行一个类别名称
    """
    names = {}
    names2 = {}
    with open(r'.\Data3\classes_xinpian.txt', 'r') as data:
        for ID, name in enumerate(data):
            names[name.strip('\n')] = ID
            names2[ID]=name.strip('\n')
    print(names2)
    return names,names2

import  os
import cv2
def test_yolo():
    for i in os.listdir(r".\Data3\labels"):
        text_path=os.path.join(r".\Data3\labels",i)
        image_path=text_path.replace("labels","PIC").replace("txt","bmp")
        # image_path=r".\Data3\PIC\123456.bmp"
        # img = cv2.imread(image_path)
        print(image_path)
        img = cv2.imread(image_path)
        img_height, img_width = cv2.imread(image_path).shape[0], cv2.imread(image_path).shape[1]
        print(img_height, img_width)
        _,names2=read_class_names()
        with open(text_path, "r") as fd:
            datas = fd.readlines()

            for data in datas:

                if len(data) > 1:
                    data_list=data.strip('\n').split(' ')
                    center_x = round(float(data_list[1]) * img_width)
                    center_y = round(float(data_list[2]) * img_height)
                    bbox_width = round(float(data_list[3]) * img_width)
                    bbox_height = round(float(data_list[4]) * img_height)
                    x_min = str(int(center_x - bbox_width / 2))
                    y_min = str(int(center_y - bbox_height / 2))
                    x_max = str(int(center_x + bbox_width / 2))
                    y_max = str(int(center_y + bbox_height / 2))

                    label =names2[int(data_list[0])]
                    print(label)
                    print(x_min,y_min,x_max,y_max,label)
                #
                    cv2.putText(img,label,(int(x_min),int(y_min)-2),0,1,[255,255,255])
                    cv2.rectangle(img, (int(x_min), int(y_min)), (int(x_max), int(y_max)), (255, 0, 0), 2)
        cv2.namedWindow('img', 0)
        cv2.resizeWindow('img', int(1920), int(1680))
        cv2.imshow('img', img)
        cv2.waitKey(0)
        cv2.destroyAllWindows()

test_yolo()
    # with open(,"r") as fd:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值