到目前为止,我正在尝试使用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

这是什么意思,我该如何解决?

最佳答案

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

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

关于python - 将旋转的矩形绘制成图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49819048/

10-09 06:02