Создание круговых масок с различной некоррелированной заливкой (значения sin, cos) на изображении - PullRequest
0 голосов
/ 09 января 2019

Я хочу создать три круглые маски, каждая из которых будет иметь разную заливку в разных местах на изображении.

Прилагается мой код, но когда я печатаю маску, они являются логическими значениями, я хочу, чтобы маски давали исходные значения заполнения в плавающей точке.

import numpy as np
import random
from scipy import signal


#Creates masks
def createCircle1(width,height , rad ):
 w = random.randint(1, height)
 h = random.randint(1, height)
 center = [int(w), int(h)]
 radius = rad
 Y, X = np.ogrid[:height, :width]
 dist_from_center = np.sqrt((X - center[0])**2 + (Y-center[1])**2)
 mask1 = dist_from_center 
 mask1+= np.sin(20)
 mask1 = dist_from_center <= radius


 w = random.randint(1, height)
 h = random.randint(1, height)
 center = [int(w), int(h)]
 radius = rad
 Y, X = np.ogrid[:height, :width]
 dist_from_center = np.sqrt((X - center[0])**2 + (Y-center[1])**2)
 mask2 = dist_from_center 
 mask2+= np.sign(np.sin(10))  #fill
 mask2 = dist_from_center <= radius



 w = random.randint(1, height)
 h = random.randint(1, height)
 center = [int(w), int(h)]
 radius = rad
 Y, X = np.ogrid[:height, :width]
 dist_from_center = np.sqrt((X - center[0])**2 + (Y-center[1])**2)
 mask3 = dist_from_center 
 mask3+= signal.sawtooth(10 * np.pi) #fill
 mask3 = dist_from_center <= radius    

 return mask1, mask2, mask3

 #if i print mask1, mask2, mask3, they give boolean arrays and not            the float values



img = np.zeros([100,100],dtype=np.uint8)
img.fill(20)
img_test = img


#Adds circular masks to the image
def addCircle1(test_image):
 m1, m2, m3 = createCircle1(width = 100, height = 100 , rad = 8 )
 masked_img = test_image.copy()
 masked_img[m1] = 0
 masked_img[m2] = 0
 masked_img[m3] = 0
 return masked_img

m4 = addCircle1(img)

если я удаляю mask3 = dist_from_center <= radius </strong> из creatCircle1 , он печатает значения маски в float, но затем не маскирует круги на данном изображении.

m4 должен дать изображение с 3 круглыми масками, каждая из которых имеет разную заливку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...