使用python批量产生马赛克数据集

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      

猜你喜欢

转载自blog.csdn.net/zhou_438/article/details/113608582