上代码
import os
import xml.etree.ElementTree as ET
import numpy as np
import cv2
import pickle
import copy
import yolo.config as cfg #另一个py文件,后面会附上,这里主要读取它的路径
定义类
class Pascal_voc(object):
#定义自身属性
def __init__(self,phase, rebuild = False):
self.devkil_path = os.path.join(cfg.PSACAL_PATH,'VOCdevkit')
self.data_path = os.path.join(self.devkil_path, 'VOC201')
self.cache_path = cfg.CACHE_PATH
self.batch_size = cfg.BATCH_SIZE
self.image_size = cfg.IMAGE_SIZE
self.cell_size = cfg.CELL_SIZE
self.classes = cfg.CLASSES
self.class_to_ind = dict(zip(self.classes, \ range(len(self.classes))))
self.fliped = cfg.FLIPPED
self.phase = phase
self.rebuild = rebuild
self.cursor = 0
self.epoch = 1
self.gt_labels = None
self.prepare()
读取图片,将图片放到(-1,1)之间,如果需要进行水平镜像
def image_read(self, imname, flipped = False):
image = cv2.imread(imname)
image = cv2.resize(image,(self.image_size, self.image_size))#把图像resieze到image_size
image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB).astype(np.float32)#因为opencv读取的bgr格式,同时转化为rgb格式
image = (image/255.0) *2.0 -1.0
if filpped:
image = image[:,::-1,:]
return image
接下来,通过图片的索引值index来得到训练样例的路径和label
def load_pascal_JPEGImages_annotation(self.index):
imname