将旋转的矩形绘制到图像

时间:2018-04-13 14:14:44

标签: python opencv

我正在尝试使用openCV和python绘制rotatec矩形到目前为止我的代码:

rect = cv2.minAreaRect(boxes[i][1:])
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(image,[box],0,(0,0,255),2)

其中boxes[i][1:]是协调数组[xmin,ymin,xmax,ymax]

image是要重新绘制的图像。

然而这一直在抛出

   rect = cv2.minAreaRect(boxes[i][1:])
cv2.error: OpenCV(3.4.1) C:\bld\opencv_1520732670222\work\opencv-3.4.1\modules\imgproc\src\convhull.cpp:137: error: (-215) total >= 0 && (depth == 5 || depth == 4) in function cv::convexHull 
是什么意思,我该如何解决?

1 个答案:

答案 0 :(得分:1)

根据doc of cv2.minAreaRect,该函数需要一个点集作为输入。因此,如果您提供(xmin, ymin, xmax, ymax)元组,它将被视为由2个单点(xmin, ymin)(xmax, ymax)组成的点集。因此,找到具有最小面积的旋转矩形将导致零区域矩形(2个点之间的线段),这可能产生您获得的错误。 我对这个答案并不是100%自信,但我想这可能是对的。

所以我建议将[(xmin, ymin), (xmax, ymax)]替换为[(xmin, ymin), (xmin, ymax), (xmax, ymin), (xmax, ymax)]并测试它是否解决了问题......