Как получить imgs из блока?

#python #numpy #computer-vision

Вопрос:

Я хочу создать функцию, которая извлекает изображение только с помощью cv2 и numpy. Я не знаю, как складывать изображения, и после нескольких попыток я хотел бы знать, как бы вы подошли к этому быстро.

Подробные сведения

Исправления изображений сохраняются в каталоге следующим образом: «./input_path/file_name.label.jpg» Метка определяет положение пятна в исходном изображении. Сначала N изображений должны быть уложены вертикально. После этого результат должен быть сложен горизонтально, чтобы получить исходное изображение. Параметр n задается квадратным корнем из максимальной метки.

Мой Алгоритм

В алгоритме я прочитал все исправления изображений и сохранил их в списке. Кроме того, я вычисляю n. В конце фрагмента кода вы можете видеть, что я попробовал следующее:

  1. Создайте вложенный список, в котором каждый внутренний список имеет длину n.
  2. Складывайте внутренние списки вертикально.
  3. Сложите вертикальные стопки горизонтально.

Мой Код

 def retrieve_from_patches(input_path, output_path, name): info = show_info(data_path=input_path, file_names=[name]) imgs = [] subset_info = info[info['names'].isin([name])] patches_idx_vertical = subset_info['labels'].max() patches_count = subset_info['labels'].max()   1  full_processed_data_path = output_path   f'/retrieved_from_{patches_count}_patches/' Path(full_processed_data_path).mkdir(parents=True, exist_ok=True)  for index, row in subset_info.iterrows():  name = row['names']   '.'   str(row['labels'])   '.jpg'  img = cv2.imread(input_path   name, 1)  imgs.append(img)  patches_count_vertical = int(np.sqrt(patches_count))  vertical_stacks = []  for i in range(0, patches_count_vertical):  to_stack = []  for i in range(0, patches_count_vertical):  to_stack.append(imgs.pop(0))  to_stack = np.array(to_stack)  stacked = np.vstack(to_stack)  #print(stacked.shape)  vertical_stacks.append(stacked)  print(len(vertical_stacks)) img = np.hstack(vertical_stacks) img = np.column_stack(img) print(img.shape)