import cv2
import numpy as np
import os
import shutil
from __future__ import print_function
from tqdm import tqdm_notebook as tqdm
#функция, которая рисует фон как в фотошопе
defgenerate_checkerboard(shape, size):
res = np. ones (shape, dtype=np.float32)
for i in range (0, shape[0] // size + 1):
for j in range (0, shape[1] // size + 1):
if (i + j) % 2 == 0:
res[i * size: i * size + size, j * size: j * size + size] = 0.7
return np. stack ([res] * 3, axis=2)
path = '01_Починок Сергей_13'
files_im = filter (lambda x: x[-4:] == '.jpg', os. listdir (path + '/images'))
files_masks = filter (lambda x: x[-4:] == '.png', os. listdir (path + '/masks'))
print ('Кол-во изображений: %s' % len (files_im))
print ('Кол-во масок: %s' % len (files_masks))
if len (files_im) ≠ len (files_masks):
print ('Кол-во изображений и масок не совпадает')
raise Exception ('bad count')
#создаем папку res, в которую будут записываться коллажи
os.makedirs (path + '/res')
for idd in tqdm (map (lambda x: x[:-4], files_im)):
print (idd)
mask = cv2. imread (path + '/masks/' + idd + ".png") / 255.
im = cv2. imread (path + '/images/' + idd + ".jpg")
checkerboard = generate_checkerboard (im.shape[:2], 40) * 255
cv2. imwrite (path + '/res/' + idd + ".jpg",
np. concatenate ([im, im * (1 — mask), im * mask + (1 — mask) * checkerboard],
axis=1))