def savePascalVocFormat(self, filename, shapes, imagePath, imageData, lineColor=None, fillColor=None, databaseSrc=None): imgFolderPath = os.path.dirname(imagePath) imgFolderName = os.path.split(imgFolderPath)[-1] imgFileName = os.path.basename(imagePath) imgFileNameWithoutExt = os.path.splitext(imgFileName)[0] # Read from file path because self.imageData might be empty if saving to # Pascal format image = QImage() image.load(imagePath) imageShape = [ image.height(), image.width(), 1 if image.isGrayscale() else 3 ] writer = PascalVocWriter(imgFolderName, imgFileNameWithoutExt, imageShape, localImgPath=imagePath) writer.verified = self.verified w, h = image.width(), image.height() for shape in shapes: print(shape['type']) points = shape['points'] self.constrainPoints(points, w, h) label = shape['label'] if shape['type'] == 'Rect': bndbox = LabelFile.convertPoints2BndBox(points) writer.addBndBox(bndbox[0], bndbox[1], bndbox[2], bndbox[3], label, 'Rect') elif shape['type'] == 'Point': point = points[0] writer.addPoint(point[0], point[1], label, 'Point') elif shape['type'] == 'Polygon': polygon = LabelFile.convertPoints2Polygon(points) writer.addPolygon(polygon[0], polygon[1], polygon[2], polygon[3], polygon[4], polygon[5], polygon[6], polygon[7], label, 'Polygon') writer.save(targetFile=filename) return
def savePascalVocFormat( self, savefilename, image_size, shapes, imagePath=None, databaseSrc=None, shape_type_='RECT'): imgFolderPath = os.path.dirname(imagePath) imgFolderName = os.path.split(imgFolderPath)[-1] imgFileName = os.path.basename(imagePath) imgFileNameWithoutExt = os.path.splitext(imgFileName)[0] #img = cv2.imread(imagePath) writer = PascalVocWriter( imgFolderName, imgFileNameWithoutExt, image_size, localImgPath=imagePath, shape_type=shape_type_) bSave = False for shape in shapes: points = shape['points'] label = shape['label'] if shape['shape_type'] == 0: print 'add rects' bndbox = LabelFile.convertPoints2BndBox(points) writer.addBndBox( bndbox[0], bndbox[1], bndbox[2], bndbox[3], label) if shape['shape_type'] == 1: print 'add polygons' writer.addPolygon(points, label) bSave = True if bSave: writer.save(targetFile=savefilename) return