OpenCV 的 selectROI 坐标如何工作?

How do OpenCV's selectROI coordinates work?

我需要为我的项目使用 selectROI 功能。但是,我似乎无法理解坐标的格式。根据这个link,坐标数组应该是这样的形式:[Top_X,Top_Y,Bottom_X,Bottom_Y]。假设(x,y)的左上角从(0,0)开始,为什么我用selectROI函数绘制3个不同的边界框时,我的坐标这么差?

这是我用来创建边界框和输出坐标的方法:

import cv2

image = cv2.imread("path")

# Select ROI
r = cv2.selectROI("select the area", image, fromCenter=False)

print('Selected bounding boxes: {}'.format(r))

输出如下(方框参考图片):

box 1: (42, 18, 212, 303) box 2: (463, 314, 108, 226) box 3: (1215, 801, 79, 161) image

为什么 x 值从 42 -> 212 -> 464 -> 增加到 108 -> 1125 -> 回到 79...x 的坐标不应该增加吗? y 也是如此。

geeksforgeeks 上的解释是错误的或者至少容易被误解:最后两个值不是 bottom-right 角的坐标,它们是矩形的宽度和高度。请注意,例如对于第三个矩形,高度 (161) 大约是宽度 (79) 的两倍,这与矩形的外观相匹配。