首页 > 其他分享 >多边形4点坐标转yolo格式矩形标签

多边形4点坐标转yolo格式矩形标签

时间:2022-12-28 20:11:23浏览次数:49  
标签:yolo 多边形 imgdir image float cv2 shape import 矩形

import os 
import cv2
import numpy as np
import matplotlib.pyplot as plt 
from shapely.geometry import LineString
def plot_img_with_label(imgdir = None, labeldir= None, text_name=None):

    #图像可视化代码,在批量转换的时候需要将下面几行注释,否则会报错#-----------------------------------
    
    # image = cv2.imread(imgdir)
    image = cv2.imdecode(np.fromfile(imgdir, dtype=np.uint8), cv2.IMREAD_COLOR)  
    image = cv2.resize(image,(2160,2160))
    tl = 3 or round(0.002 * (image.shape[0] + image.shape[1]) / 2) + 1 
    tf = max(tl - 1, 1)
    #--------------------------------------------------------------------------------------------


    # h,w,_ = image.shape   
    boxs = []
    with open(labeldir ,'r') as f:
        for line in f:
            boxs.append(line.strip().split(" ")) 
    
    with open(text_name,"w") as ff:
        for i in boxs:
            x1 = float(i[1])
            y1 = float(i[2])
            x2 = float(i[3])
            y2 = float(i[4])
            x3 = float(i[5])
            y3 = float(i[6])
            x4 = float(i[7])
            y4 = float(i[8])

            point1 = [x1,y1]
            point2 = [x2,y2]
            point3 = [x3,y3]
            point4 = [x4,y4]  

            label = i[0]
            if len(i)<10:
                conf = "1.0"
            else:
                conf = i[9]
            label = label+":"+conf
            a = np.array([[np.array(point1), np.array(point2), np.array(point3), np.array(point4)]], dtype = np.int32) 
    

            x,y,w,h = cv2.boundingRect(a)
            roi=str(i[0])+" "+ str(x)+" "+str(y)+" "+ str(w)+" "+str(h)
            ff.write(roi + '\n')



            #图像可视化代码,在批量转换的时候需要将下面几行注释,否则会报错----------------------------------
            cv2.polylines(image, a, 1, [255,0,255],2) # 绘制多边形
            cv2.putText(image, label, (int(point1[0]), int(point1[1]) - 2), 0, 2, [225, 255, 0], thickness=tf, lineType=cv2.LINE_AA) # 显示对应类别
            cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)
            #--------------------------------------------------------------------------------------------


    #图像可视化代码,在批量转换的时候需要将下面几行注释,否则会报错----------------------------------
    plt.imshow(image) 
    plt.show()
    print("*****finished: %s"%imgdir)
    #--------------------------------------------------------------------------------------------


def main():
    # json_floder_path = r'.\annotation'  #json文件的路径
    folder_path = r'.\yolo5'
    img_folder =  r'.\images'
    targetdir = r'.\yolo5_rect'
    names = os.listdir(folder_path)
    # imgw = 3840
    # imgh = 2160
    imgw = 1.0
    imgh = 1.0

    for name in names:
        imgname ="...."+name[:-4]+".jpg" #这里临时获取靠前部分文件名图片可视化,成批获取会报错
        # print (imgname)
        imgdir = os.path.join(img_folder,imgname)
        labeldir = os.path.join(folder_path,name)
        text_name = os.path.join(targetdir,name)
        plot_img_with_label(imgdir, labeldir,text_name)
    
    print("finished...")


if __name__ == "__main__":
    main()

标签:yolo,多边形,imgdir,image,float,cv2,shape,import,矩形
From: https://www.cnblogs.com/tccjx/p/17011184.html

相关文章

  • 「USACO5.5」矩形周长Picture
    「USACO5.5」矩形周长Picture求所有矩形合并后的周长开两个线段树,一个从左往右扫,另外一个从下往上扫当扫描线扫到蓝色的线段时,相对于上次需要增加,当前覆盖的长度为红......
  • 万字长文详解 YOLOv1-v5 系列模型
    一,YOLOv1Abstract1.Introduction2.UnifiedDetectron2.1.NetworkDesign2.2Training2.4.Inferences4.1ComparisontoOtherReal-TimeSystems5,代码实......
  • 安装算量风管按周长(矩形)或直径(圆形)范围如何进行统计?
    答:风管计算完成后是可以按照周长(矩形)或直径(圆形)范围进行统计的。通过汇总表中将汇总方式中的区分规格范围选项勾选起即可,如图:附:上图中的周长或直径范围是软件默认的范围......
  • yolo5使用gpu时遇到的问题记录
    一、问题描述:1、训练的时候提示不支持gpu2、使用如下命令检查为Falseimporttorchtorch.cuda.is_available()二、原因:pytorch版本的问题 三、解决办法: 重新安......
  • 将自有数据集下yolov训练结果(*.weights) 在进行部署
      原始的*.weigths是由darknet训练的(目前也存在tensorflow和其它库的改写版本,这里不做介绍),AlexeyAB版的darknet(​​https://github.com/AlexeyAB/darkne......
  • 超越YOLO v5的最强算法矩阵来啦!PP-YOLOE、PP-PicoDet 云边端一网打尽!
    目标检测作为计算机视觉领域的顶梁柱,不仅可以独立完成车辆、商品、缺陷检测等任务,也是人脸识别、视频分析、以图搜图等复合技术的核心模块,在自动驾驶、工业视觉、安防交通等......
  • YOLOX输出格式
    网络原始输出output=torch.cat([reg_output,obj_output.sigmoid(),cls_output.sigmoid()],1)https://github.com/Megvii-BaseDetection/YOLOX/blob/16d5a5f3dda342fd1df......
  • 判断点是否在一个矩形内
    usingSystem.Drawing;///<summary>///判断点是否在矩形内///</summary>///<paramname="x">坐标X</param>///<paramname="y">坐标Y</param>///<paramname=......
  • 自有数据集上使用keras训练YOLOv3目标检测
    基于《自有数据集上,如何用keras最简单训练YOLOv3目标检测》原项目地址:keras-yolo3-improvedselfdata_keras_yolov3.ipynb,训练ipynbselfdata_yolov3......
  • 基于YOLOv5实现集装箱检测跟踪
     首先展示下效果(cpu下),电脑配置如下,win10操作系统   最终的效果   下面进入实际操作1.安装anaconda与pycharm(不会可以百度下)2.运行anaconda 3......