在 python 中计算矩形的质心
Compute the centroid of a rectangle in python
我想计算矩形的质心,矩形的坐标如下:
co_ord = (601, 1006,604, 1009) ## (xmin,ymin,xmax,ymax)
谁能指出一个简单的方法。
谢谢
具有对角 (x1, y1)
和 (x2, y2)
的矩形的质心位于该矩形的中心 ((x1+x2)/2, (y1+y2)/2)
首先,我假设您所说的质心是指中心。接下来,我假设坐标元组的格式为:(x, y, width, height)。在那种情况下,它会这样做:
coord = (601, 1006, 604, 1009)
centerCoord = (coord[0]+(coord[2]/2), coord[1]+(coord[3]/2))
其中 centerCoord 是格式 (x, y) 中的中心坐标。
如果你有正确的矩形坐标,你可以很容易地用公式计算质心点坐标:
如果你有矩形的2个相对点,你可以使用这个:
- A点:X1; Y1
- B点:X2; Y2
计算的质心点:
- X 坐标:(x1+x2)/2
- Y坐标:(y1+y2)/2
只是一个建议:
你可以在你的程序中写一个检查部分。您应该检查程序获得的参数。基本 运行 不需要,但如果程序检查矩形是否为真实矩形会更好。
我认为这应该会让您眼前一亮。我将使用 openCV 库使示例更易于理解。
要找到一个中心,您需要坐标:x 和 y。
# Draw a rectangle on the image. pt1 = left upper corner, pt2 = right bottom corner
cv2.rectangle(img=your_image, pt1=(px1_width, px2_height), pt2=(px3_width, px4_height), color=(0, 255, 0), thickness=3)
# Calculate the center point of rectangle
x, y = (px1_width + px3_width) // 2, (px2_height + px4_height) // 2
# Draw a circle in the center of rectangle
cv2.circle(img=your_image, center=(x, y), radius=3, color=(0, 255, 0), thickness=3)
我想计算矩形的质心,矩形的坐标如下:
co_ord = (601, 1006,604, 1009) ## (xmin,ymin,xmax,ymax)
谁能指出一个简单的方法。 谢谢
具有对角 (x1, y1)
和 (x2, y2)
的矩形的质心位于该矩形的中心 ((x1+x2)/2, (y1+y2)/2)
首先,我假设您所说的质心是指中心。接下来,我假设坐标元组的格式为:(x, y, width, height)。在那种情况下,它会这样做:
coord = (601, 1006, 604, 1009)
centerCoord = (coord[0]+(coord[2]/2), coord[1]+(coord[3]/2))
其中 centerCoord 是格式 (x, y) 中的中心坐标。
如果你有正确的矩形坐标,你可以很容易地用公式计算质心点坐标:
如果你有矩形的2个相对点,你可以使用这个:
- A点:X1; Y1
- B点:X2; Y2
计算的质心点:
- X 坐标:(x1+x2)/2
- Y坐标:(y1+y2)/2
只是一个建议: 你可以在你的程序中写一个检查部分。您应该检查程序获得的参数。基本 运行 不需要,但如果程序检查矩形是否为真实矩形会更好。
我认为这应该会让您眼前一亮。我将使用 openCV 库使示例更易于理解。
要找到一个中心,您需要坐标:x 和 y。
# Draw a rectangle on the image. pt1 = left upper corner, pt2 = right bottom corner
cv2.rectangle(img=your_image, pt1=(px1_width, px2_height), pt2=(px3_width, px4_height), color=(0, 255, 0), thickness=3)
# Calculate the center point of rectangle
x, y = (px1_width + px3_width) // 2, (px2_height + px4_height) // 2
# Draw a circle in the center of rectangle
cv2.circle(img=your_image, center=(x, y), radius=3, color=(0, 255, 0), thickness=3)