郑州网站app开发,wordpress和python,网站免费的,重庆传媒公司前十名二、VOC可视化数据集
1、作用
在做目标检测时#xff0c;首先要检查标注数据。一方面是要了解标注的情况#xff0c;另一方面是检查数据集的标注和格式是否正确#xff0c;只有正确的情况下才能进行下一步的训练。 2、代码实现
import os
# import sys
import cv2
import… 二、VOC可视化数据集
1、作用
在做目标检测时首先要检查标注数据。一方面是要了解标注的情况另一方面是检查数据集的标注和格式是否正确只有正确的情况下才能进行下一步的训练。 2、代码实现
import os
# import sys
import cv2
import random
from tqdm import tqdm
# import numpy as np
import argparse
import xml.etree.ElementTree as ETdef xml_reader(filename): Parse a PASCAL VOC xml file tree ET.parse(filename)objects []for obj in tree.findall(object):obj_struct {}obj_struct[name] obj.find(name).textbbox obj.find(bndbox)obj_struct[bbox] [int(bbox.find(xmin).text),int(bbox.find(ymin).text),int(bbox.find(xmax).text),int(bbox.find(ymax).text)]objects.append(obj_struct)return objectsdef get_image_list(image_dir, suffix[jpg, png]):get all image path ends with suffixif not os.path.exists(image_dir):print(PATH:%s not exists % image_dir)return []imglist []for root, sdirs, files in os.walk(image_dir):if not files:continuefor filename in files:filepath os.path.join(root, filename)if filename.split(.)[-1] in suffix:imglist.append(filepath)return imglistif __name__ __main__:parser argparse.ArgumentParser(descriptioncheck data)parser.add_argument(--input, destinput, helpThe input dir of images, typestr)parser.add_argument(--output, destoutput, defaulttemp, helpThe output dir of images, typestr)parser.add_argument(--num, destnum, default50, helpThe number of images you want to check, typeint)args parser.parse_args()if not os.path.exists(args.output):os.makedirs(args.output)img_list get_image_list(args.input)img_list random.sample(img_list, args.num)for img_path in tqdm(img_list):img cv2.imread(img_path)if img is None or not img.any():continuexml_path img_path.replace(JPEGImages, Annotations).replace(.jpg, .xml).replace(.png, .xml)objects xml_reader(xml_path)if len(objects) 0:continue# draw box and namefor obj in objects:name obj[name]box obj[bbox]p1 (box[0], box[1])p2 (box[2], box[3])p3 (max(box[0], 15), max(box[1], 15))cv2.rectangle(img, p1, p2, (0, 0, 255), 2)cv2.putText(img, name, p3, cv2.FONT_ITALIC, 1, (0, 255, 0), 2)img_name os.path.basename(img_path)cv2.imwrite(os.path.join(args.output, img_name), img)
3、使用方法
python Visual_dataset.py --input VOCdevkit/JPEGImages --output ./Result_imgs --num 3408python 上述代码的文件名称 --input 图片地址 --output 输出文件夹地址 --num 图片数量4、常见报错 (python38) D:\pythontorch\VOCpython Visual_dataset.py --input VOCdevkit/ImageSets --output Result_imgs --num 3408 Traceback (most recent call last): File Visual_dataset.py, line 55, in module img_list random.sample(img_list, args.num) File C:\ProgramData\Anaconda3\envs\python38\lib\random.py, line 363, in sample raise ValueError(Sample larger than population or is negative) ValueError: Sample larger than population or is negative 原因 你的路径写错了