Python 为什么使用opencv在圆外绘制的矩形不显示?

Python 为什么使用opencv在圆外绘制的矩形不显示?,python,opencv,image-processing,computer-vision,Python,Opencv,Image Processing,Computer Vision,我想要一个圆形外的矩形边界框 我有一个深度图像,我有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)):

我想要一个圆形外的矩形边界框

我有一个深度图像,我有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()
而不是使用:
rect=cv2.矩形(img,(x1,y1),(x1+w1,y1+h1),(0255255),3)

运行:
cv2.矩形(img,(x1,y1),(x1+w1,y1+h1),(0255255),3)

然后在img上运行
imshow()


另一个原因可能是灰色通道图像仅拾取
(0255255)
颜色对象的
B
组件,因此绘制了矩形,但在当前输出图像和预期输出图像后不可见。您可能希望始终操纵相同的图像对象,而不是不同的图像对象。尝试将
img1
替换为
img
当分配
rect
变量时,代码中存在错误,
y1=y+r
可能必须改为'y1=y-r'。您打印了x1,y1,w1,h1,您检查了这些值吗?你有没有试着把它们硬编码成一张图片?您是否尝试绘制不同的硬编码矩形,以测试数据/参数格式是否存在任何问题?此外,出于某种原因,您尝试将彩色(
(025525)
)绘制到灰度图像中。