Я хочу добавить 4 круга в разных случайных местах на заданном изображении (python), но код не работает после добавления одного - PullRequest
0 голосов
/ 03 января 2019

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

Прилагается код, который я пробовал:

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



def createCircle(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)

  mask = dist_from_center <= radius

  return mask


def addCircle(test_image):
  m = createCircle(width = 100, height = 100 , rad = 8 )
  masked_img = test_image.copy()
  masked_img[~m] = 0
  return masked_img

im = addCircle(test_image=img)
plt.imshow(im)
plt.show()

im1 = addCircle(test_image = im)
plt.imshow(im1)
plt.show()

Когда я применяю функцию addCircle к изображению img, он добавляет кружок кизображение, но когда я применяю функцию addCircle к im, это не добавляет еще один круг к изображению.

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

1 Ответ

0 голосов
/ 04 января 2019

Как уже упоминалось в комментариях ... Ваша проблема, кажется, в этой строке masked_img[~m] = 0.

def addCircle(test_image):
    m = createCircle(width = 100, height = 100 , rad = 8 )
    masked_img = test_image.copy()
    masked_img[m] = 0
    return masked_img

# im = addCircle(test_image=img)
# plt.imshow(im)
# plt.show()
for i in range(4):
    img = addCircle(test_image=img)
plt.imshow(img)
plt.show()

Result

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