网站如何做网站征求意见专栏,网站域名解析ip查询,科技强国向秦始皇直播四大发明,网站建设这一行业怎样以下教程用于验证转成YOLO使用的txt格式#xff0c;适用场景#xff1a;矩形框#xff0c;配合json格式文件转成YOLO使用的txt格式脚本使用。
https://blog.csdn.net/StopAndGoyyy/article/details/138681454
使用方式#xff1a;将img_path和label_path分别填入对应的图… 以下教程用于验证转成YOLO使用的txt格式适用场景矩形框配合json格式文件转成YOLO使用的txt格式脚本使用。
https://blog.csdn.net/StopAndGoyyy/article/details/138681454
使用方式将img_path和label_path分别填入对应的图片文件夹及标签文件夹路径运行。show_num参数控制最大展示数量按空格切换。 import os
import numpy as np
import cv2img_format [.jpg, .png, .jpeg]
colors [(0, 0, 0), (128, 0, 0), (0, 128, 0), (128, 128, 0), (0, 0, 128), (128, 0, 128), (0, 128, 128),(128, 128, 128), (64, 0, 0), (192, 0, 0), (64, 128, 0), (192, 128, 0), (64, 0, 128), (192, 0, 128),(64, 128, 128), (192, 128, 128), (0, 64, 0), (128, 64, 0), (0, 192, 0), (128, 192, 0), (0, 64, 128),(128, 64, 12)]def get_files(img_path, label_path):img_list []label_list []datast_img_format Noneassert os.path.exists(img_path) and os.path.exists(label_path), print(⭐⭐文件夹不存在⭐⭐)if os.path.isdir(img_path):for i in os.listdir(img_path):if os.path.splitext(i)[-1] in img_format:# i i.replace(os.path.splitext(i)[-1], )img_list.append(i)datast_img_formatimg_list[-1].split(.)[-1]if os.path.isdir(label_path):for i in os.listdir(label_path):if os.path.splitext(i)[-1] .txt:i i.replace(os.path.splitext(i)[-1], )label_list.append(i)print(路径下无jpg,png,jpeg格式的图片,当前图像路径: str(img_path) if len(img_list) 0 else 图像总数为 str(len(img_list)))print(路径下无标签文件,当前标签路径 str(label_path) if len(label_list) 0 else 标签总数为 str(len(label_list)))img_without_label []for i in img_list:if i.replace(os.path.splitext(i)[-1], ) not in label_list:img_without_label.append(i)if len(img_without_label) ! 0:print(标签丢失的图像有 str(img_without_label))ok_img list(set(img_list) - set(img_without_label))return [i.replace(.jpg, ) for i in ok_img], .datast_img_format# 坐标转换
def xywh2xyxy(x, w1, h1, img):label, x, y, w, h xx_t x * w1y_t y * h1w_t w * w1h_t h * h1top_left_x x_t - w_t / 2top_left_y y_t - h_t / 2bottom_right_x x_t w_t / 2bottom_right_y y_t h_t / 2cv2.rectangle(img, (int(top_left_x), int(top_left_y)), (int(bottom_right_x), int(bottom_right_y)),colors[int(label)] if int(label) len(colors) else colors[0], 2)cv2.putText(img, textstr(int(label)), org(int(top_left_x), int(top_left_y)), fontFacecv2.FONT_HERSHEY_COMPLEX,fontScale1, colorcolors[int(label)] if int(label) len(colors) else colors[0], thickness3)return imgif __name__ __main__:# 修改输入图片文件夹img_path rO:\DeepLearningTool\01_handle_dataset\dataset\object\image# img_path rO:\DeepLearningTool\dataset\image# 修改输入标签文件夹label_path rO:\DeepLearningTool\01_handle_dataset\dataset\object\label# label_path rO:\DeepLearningTool\dataset\label# 输出文件夹outfile ./# 是否展示绘制的图片if_show True# 最大展示图片的数量(按空格切换)show_num 3# 是否保存绘制的图片if_save Falseif os.path.isdir(img_path):ok_img, datast_img_format get_files(img_path, label_path)haveShow 0for i in ok_img:assert os.path.exists(str(img_path) \\ i datast_img_format)img cv2.imread(str(img_path) \\ i datast_img_format)h, w img.shape[:2]with open(label_path \\ i .txt, r) as f:lb np.array([x.split() for x in f.read().strip().splitlines()], dtypenp.float32)for x in lb:img xywh2xyxy(x, w, h, img)if if_show:cv2.namedWindow(Image with label, 0)cv2.resizeWindow(Image with label, 600, 500)cv2.imshow(Image with label, img)cv2.waitKey(0)if if_save:outfile outfile if len(outfile) 0 else ./output/if not os.path.exists(./output/):os.mkdir(./output/)print(outfile i)cv2.imwrite(outfileidatast_img_format, img)haveShow 1if haveShow show_num:breakelse:img cv2.imread(str(img_path))h, w img.shape[:2]assert os.path.isfile(label_path), 标签路径错误with open(label_path) as f:lb np.array([x.split() for x in f.read().strip().splitlines()], dtypenp.float32)for x in lb:img xywh2xyxy(x, w, h, img)if if_show:cv2.namedWindow(Image with label, 0)cv2.resizeWindow(Image with label, 600, 500)cv2.imshow(Image with label, img)cv2.waitKey(0)