import os
import cv2
import numpy as np
os.makedirs('dataset\\mosaic\\train',exist_ok=True)
os.makedirs('dataset\\mosaic\\test',exist_ok=True)
locsx=np.random.randint(10,200,100000).tolist()#随机产生x位置
locsy=np.random.randint(10,300,100000).tolist()#随机产生y位置
index=0
ls_train=os.listdir('dataset\\images\\train')
ls_test=os.listdir('dataset\\images\\test')
ls_train.sort()
ls_test.sort()
mx,my=80,80#马赛克长、宽
#train
for it in ls_train:
im = cv2.imread('dataset\\images\\train\\'+it, 1)
print(it)
ih, iw = im.shape[0], im.shape[1]
x,y=locsx[index], locsy[index]
while((y + my > ih) or (x + mx > iw)):
index+=1
x,y=locsx[index], locsy[index]
for i in range(0, mx - 10, 10):
for j in range(0, mx - 10, 10):
rect = [j + x, i + y, 10, 10]
color = im[i + y][j + x].tolist()
left_up = (rect[0], rect[1])
right_down = (rect[0] + 10 - 1, rect[1] + 10 - 1) #
cv2.rectangle(im, left_up, right_down, color, -1)
cv2.imwrite("dataset\\mosaic\\train\\"+it, im)
index+=1
#test
for it in ls_test:
im = cv2.imread('dataset\\images\\test\\'+it, 1)
print(it)
ih, iw = im.shape[0], im.shape[1]
x,y=locsx[index], locsy[index]
while((y + my > ih) or (x + mx > iw)):
index+=1
x,y=locsx[index], locsy[index]
for i in range(0, mx - 10, 10):
for j in range(0, mx - 10, 10):
rect = [j + x, i + y, 10, 10]
color = im[i + y][j + x].tolist()
left_up = (rect[0], rect[1])
right_down = (rect[0] + 10 - 1, rect[1] + 10 - 1) #
cv2.rectangle(im, left_up, right_down, color, -1)
cv2.imwrite("dataset\\mosaic\\test\\"+it, im)
index+=1