OpenCV создать круг за пределами - PullRequest
1 голос
/ 10 апреля 2020

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

def create_circle(image):
  found = False
  color = (np.random.randint(low=0, high=255),
           np.random.randint(low=0, high=255),
           np.random.randint(low=0, high=255))
  while not found:
    pos = (np.random.randint(low=0, high=image.shape[1]),
           np.random.randint(low=0, high=image.shape[0]))
    rad = np.random.randint(low=0, high=image.shape[0]//2)
    if( rad +pos[0]< image.shape[0] and rad +pos[1]< image.shape[1]
       and rad -pos[0] >= 0 and rad -pos[1]>= 0):
      found = True
  cv2.circle(image,pos,rad,color,-1)    

круг продолжает выходить за границы изображения

enter image description here

1 Ответ

1 голос
/ 10 апреля 2020

В логи c имеется небольшая ошибка для принятия решения, действительны ли сгенерированная позиция и радиус. Условия

rad - pos[0] >= 0 and rad - pos[1] >= 0

эквивалентны

rad >= pos[0] and rad >= pos[1]

, что составляет True, только если радиус превышает координаты x и y центра круга. Вы хотите противоположное, то есть

pos[0] >= rad and pos[1] >= pos[1]
# or
pos[0] - rad >= 0 and pos[1] - rad >= 0

, которое будет оценивать True только в том случае, если координаты x и y центра круга превышают радиус.

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