Почему прямоугольник, нарисованный вне круга с помощью opencv, не отображается? - PullRequest
0 голосов
/ 07 мая 2018

Мне нужна прямоугольная ограничительная рамка за пределами круга.

image

У меня есть изображение глубины, и у меня есть x, y и r.Из этого я рисую круг и хочу создать прямоугольник, ограничивающий прямоугольник вне круга.Но каждый раз, когда он показывает мне только круг.

Ниже мой код:

images = glob.glob(--image path--)
gt_boxes = open(--ground truth location--, 'r+')
data = list(zip(images, gt_boxes))
df1 = pd.DataFrame(data)
for n in range(0,len(data)):

   img = cv2.imread(df1.iloc[n][0],0)

   id1 = df1[1][n]
   id_1, x, y, r = [int(x) for x in id1.split()]

   print(df1.iloc[n][0],id_1)
   img1 = cv2.circle(img,(x,y), r, (0,255,255), 1)
   #print(df1.iloc[n][0],id_1)
   x1 = x-r
   y1 = y+r
   w1 = 2*r
   h1 = 2*r
   print(x1,y1,w1,h1)
   rect = cv2.rectangle(img,(x1,y1),(x1+w1,y1+h1),(0,255,255),3)
   cv2.imshow("rectangle",rect)
   cv2.waitKey(50)
   key = cv2.waitKey(0) & 0xFF
   if key == ord("q"):
     break

cv2.destroyAllWindows()

1 Ответ

0 голосов
/ 08 мая 2018

Вместо использования: rect = cv2.rectangle(img,(x1,y1),(x1+w1,y1+h1),(0,255,255),3)

Пробег: cv2.rectangle(img,(x1,y1),(x1+w1,y1+h1),(0,255,255),3)

и затем запустите imshow() на img.

Другая причина может заключаться в том, что изображение серого канала воспринимает только компонент B вашего цветного объекта (0,255,255), поэтому прямоугольник рисуется, но не отображается

...