Example #1
0
    def get_generator(self, bg_img_conf):
        """
        generator
        :param bg_img_conf:
        :return:
        """
        gen_probability = []
        all_generator = []
        for item in bg_img_conf:
            t = item['type']
            probability = float(item['probability'])
            if t == 'from_dir':
                bg_img_dir = item['dir']
                img_path_list = [os.path.join(bg_img_dir, img) for img in os.listdir(bg_img_dir) if ('.DS' not in img)]
                dir_img_gen = DirImageGen(img_path_list)
                all_generator.append(dir_img_gen)
            elif t == 'from_generate':
                width_range = eval(item['width_range'])
                height_range = eval(item['height_range'])
                gauss_img_gen = GenrateGaussImage(width_range=width_range, height_range=height_range)
                all_generator.append(gauss_img_gen)
            gen_probability.append(probability)

        value_list = gen_probability
        len_gen = len(all_generator)
        while True:
            index = Random.random_choice(list(value_list))
            if index <= len_gen and all_generator[index]:
                np_img = all_generator[index].get_next.__next__()
                np_img = np_img[..., ::-1]
                img = Image.fromarray(np_img, mode='RGB')
                yield img
Example #2
0
    def get_generator(self, corpus_list):
        _all_generator = []
        gen_probability_list = []

        for corpus in corpus_list:
            gen_probability_list.append(float(corpus['probability']))

            with open(corpus['path'], 'r') as fp:
                if corpus['type'] == 'line':
                    data = fp.readlines()
                    data = self._replace_useless(data)
                    generator = RandomCorpusGen(data,
                                                eval(corpus['len_range']))
                    _all_generator.append(generator)
                elif corpus['type'] == 'word':
                    data = fp.readline()
                    data = self._replace_useless(data)
                    generator = RandomCharacterGen(list(data),
                                                   eval(corpus['len_range']))
                    _all_generator.append(generator)

        while True:
            index = Random.random_choice(gen_probability_list)
            if _all_generator[index]:
                yield _all_generator[index].get_next.__next__()
Example #3
0
def pick(strategy_list) -> Strategy:
    """
    选择一个策略
    :return:
    """
    strategy_values = []
    for strategy in strategy_list:
        strategy_values.append(float(strategy['probability']))
    index = Random.random_choice(list(strategy_values))

    strategy_name = strategy_list[index]['name']
    strategy = get_strategy_by_name(strategy_name)

    log.info("pick strategy: {strategy}".format(strategy=strategy_name))
    return strategy