Ejemplo n.º 1
0
 def __init__(self, image, piece_size, population_size, generations, elite_size=2):
     self._image = image
     self._piece_size = piece_size
     self._generations = generations
     self._elite_size = elite_size
     pieces, rows, columns = image_helpers.flatten_image(image, piece_size, indexed=True)
     self._population = [Individual(pieces, rows, columns) for _ in range(population_size)]
     self._pieces = pieces
Ejemplo n.º 2
0
 def __init__(self, image, piece_size, population_size, generations, r, c):
     self._image = image
     self._piece_size = piece_size
     self._generations = generations
     self._elite_size = Config.elite_size
     pieces, rows, columns = image_helpers.flatten_image(image,
                                                         piece_size,
                                                         indexed=True,
                                                         r=r,
                                                         c=c)
     self.rows = rows
     self.columns = columns
     self._population = [
         Individual(pieces, rows, columns) for _ in range(population_size)
     ]
     self._pieces = pieces
     self.common_edges = dict()
Ejemplo n.º 3
0
    def __init__(self,
                 image,
                 piece_size,
                 population_size,
                 generations,
                 elite_size=2,
                 position_file="image_position.txt"):
        # 初始化种群: 代数,人口 TODO
        self._image = image
        self._piece_size = piece_size
        self._generations = generations
        self._elite_size = elite_size
        pieces, rows, columns = image_helpers.flatten_image(
            image, piece_size, indexed=True, position_file=position_file)
        # 循环population_size次,每次都将Individual方法调用返回的对象加入到list中

        self._population = [
            Individual(pieces, rows, columns) for _ in range(population_size)
        ]
        self._pieces = pieces
Ejemplo n.º 4
0
def create_puzzle(image_path, output_path, piece_size, position_file):
    """Creates jigsaw puzzle from input image"""
    image = cv2.imread(image_path)
    # 分割图片
    pieces, rows, columns = image_helpers.flatten_image(
        image, piece_size, False)

    # Create puzzle by stacking pieces
    puzzle = image_helpers.assemble_image(pieces, rows, columns, True)
    # 保存图片
    cv2.imwrite(str(output_path).replace(".jpg", "_format.jpg"), puzzle)
    # Randomize pieces in order to make puzzle
    np.random.shuffle(pieces)

    # Create puzzle by stacking pieces
    puzzle = image_helpers.assemble_image(pieces, rows, columns, True)

    save_piece_position(pieces, rows, columns, position_file)

    cv2.imwrite(output_path, puzzle)
    print_messages(["Puzzle created with {} pieces".format(len(pieces))])
Ejemplo n.º 5
0
def create_puzzle(image_path, piece_size):
    image = misc.imread(image_path)
    pieces, rows, columns = image_helpers.flatten_image(image, piece_size)
    np.random.shuffle(pieces)
    return image_helpers.assemble_image(pieces, rows, columns)
Ejemplo n.º 6
0
def puzzle():
    pieces, rows, columns = image_helpers.flatten_image(image, PIECE_SIZE)
    np.random.shuffle(pieces)
    return image_helpers.assemble_image(pieces, rows, columns)