-
Notifications
You must be signed in to change notification settings - Fork 0
/
freeFormRandomMask.py
63 lines (55 loc) · 1.56 KB
/
freeFormRandomMask.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from PIL import Image
import numpy as np
import random
import matplotlib.pyplot as plt
from resizeimage import resizeimage
from PIL import Image
import cv2
def random_free_form(config):
imageHeight, imageWidth = 256, 256
maxVertex = 12
maxLength = 100
maxAngle = 2*np.pi/5
meanAngle = 2*np.pi/15
maxBrushWidth = 40
mask = np.zeros([imageHeight,imageWidth], dtype='int')
numVertex = int(random.uniform(4,maxVertex))
startX = random.uniform(0,imageWidth)
startY = random.uniform(0,imageHeight)
brushwid = []
X = []
X.append(startX)
Y = []
Y.append(startY)
fig, ax = plt.subplots()
ax.axis('off')
brushWidth = random.uniform(12,maxBrushWidth)
for i in range(numVertex):
angle = random.uniform(meanAngle - maxAngle,meanAngle + maxAngle)
if(i%2 == 0):
angle = 2*np.pi - angle
length = random.uniform(0,maxLength)
startX = startX + length*np.sin(angle)
startY = startY + length*np.cos(angle)
X.append(startX)
Y.append(startY)
cir = plt.Circle((startX,startY),brushWidth/4,color="black")
ax.add_artist(cir)
plt.plot(X,Y,linewidth=brushWidth,color="black")
fig.savefig('mask64.png')
with open('mask64.png', 'r+b') as f:
with Image.open(f) as image:
cover = resizeimage.resize_cover(image, [256, 256])
cover.save('mask256.png', image.format)
im = cv2.imread("mask256.png",0)
for x in range(256):
for y in range(256):
if(im[x][y] == 255):
im[x][y]=1
else:
im[x][y]=0
#img = Image.fromarray(im,'L')
#img.save("mask1.png")
im = np.expand_dims(im,axis = 0)
im = np.expand_dims(im,axis = 3)
return im