code: import random
  import cv2
  import numpy as np
  from tqdm import tqdm
  
  file_name = 'map.png'
  img = cv2.imread(file_name, -1)
  
  dst = img.copy()
  h, w = img.shape
  epsilon = 0.9999
  
  # 그레이스케일과 바이너리 스케일 변환
  th = cv2.bitwise_not(dst)
  contours, _ = cv2.findContours(th, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
  
  contours.sort(key=len)
  size_contours = []
  print("i found contour(s):", end="")
  for i in contours: size_contours.append(len(i))
  print(size_contours)
  print("epslion: ", epsilon)
  
  
  # 외곽선 검출
  in_contour = contours[0]
  out_contour = contours[-1]
  
  # 바깥쪽 라인 
  cv2.drawContours(dst, [out_contour], -1, 100, 3)
  cv2.fillPoly(dst, [out_contour], 100)
  # 안쪽 라인 
  cv2.drawContours(dst, [in_contour], -1, 200, 3)
  cv2.fillPoly(dst, [in_contour], 200)
  
  
  # 트랙안에서 점찍기
  pbar = tqdm(range(w))
  for i in pbar:
      for j in range(h):
          if np.all(dst[i][j] == np.array(100)) and random.random() >= epsilon:
              cv2.circle(img, (j,i), 2, (0,0,0), -1)
              pbar.set_description(f"\u001b[35mAdded Obstacle - [{j},{i}]\u001b[0m ")
              # print(f"added obs: [{j},{i}]   \r", end="")
  print()
  
  cv2.imwrite(f"obs_{file_name}", img)
  # cv2.imshow('cont', dst)
  # cv2.imshow('obs_img', img)
  # cv2.waitKey()
  # cv2.destroyAllWindows()
apis: numpy.array