【发布时间】:2020-08-11 11:19:44
【问题描述】:
我正在尝试使用 Python 中的 OpenCV 从大型 (1920x1080) 图像中切割停车位,如下所示:
def cut_polygon_ROI_from_img(image: np.ndarray, ROI) -> np.ndarray:
x, y, w, h = ROI.bounding_rect
cropped = image[x:x + w, y:y + h].copy()
points_arr = ROI.points - ROI.points.min(axis=0)
mask = np.zeros(cropped.shape[:2], np.uint8)
cv2.fillConvexPoly(mask, points_arr, color=(255, 255, 255))
cropped = cv2.bitwise_and(cropped, cropped, mask=mask)
return cropped
我手动测量了边界点(位于ROI.points 中)。 ROI.bounding_rect 包含 cv2.boundingRect(points) 元组,它是根据我手工测量的点创建的:
[[ 275 1420]
[ 279 1531]
[ 454 1616]
[ 453 1503]]
点从左上角顺时针排列。由于某种原因,切割后我得到:
为了检查,我将一个矩形从[ 275 1420](左上角)剪切到[ 454 1616](右下角),我有:
如您所见,第一点和第三点都可以,但第二点和第四点颠倒了,即。 e.从第一点到第三点沿对角线反射。我该如何解决这个问题?
【问题讨论】:
标签: python image opencv image-processing