opencv 如何根据给定圆的坐标剪切图像的一部分

4uqofj5v  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(157)

我正在尝试根据一些圆的坐标剪切图像的一部分,我最初的尝试是这样做的

startx = circle[0]
starty = circle[1]
radius = circle[2]
recImage = cv2.rectangle(image,(startx-radius,starty-radius), (startx+radius,starty+radius), (0,0,255),2)
miniImage = recImage[startx-radius:startx+radius,starty-radius:starty+radius]

circle[0]和circle[1]是圆心的x和y坐标,circle[2]是半径。recImage应该绘制矩形,然后miniImage应该是该矩形的较小图像。但是它们没有对齐。the image of squares to cut outone of the actual cut outs
我希望它们能排成一行,因为它们的起始值和结束值是相同的,但它们没有。谢谢

pbossiut

pbossiut1#

您的程式码中有错误。您正在使用圆心的坐标来绘制矩形并剪下迷你影像。但是,应该使用矩形左上角的坐标来绘制矩形并剪下迷你影像。
下面是更新后的代码:

startx = circle[0]
starty = circle[1]
radius = circle[2]

# Calculate the coordinates of the top left corner of the rectangle
x1 = startx - radius
y1 = starty - radius
x2 = startx + radius
y2 = starty + radius

# Draw the rectangle on the image
recImage = cv2.rectangle(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

# Cut out the mini image from the rectangle
miniImage = recImage[y1:y2, x1:x2]

# Show the mini image
cv2.imshow('Mini Image', miniImage)
cv2.waitKey(0)
cv2.destroyAllWindows()

相关问题