我正在尝试使用OpenCV从图像中识别和提取一个相当明显的区域。到目前为止,通过使用阈值和一系列膨胀和腐蚀操作,我成功地找到所需区域的轮廓。
然而,我的尝试使用
以下是翻译的结果:
然而,我的尝试使用
minAreaRect
作为旋转和裁剪的先决条件未能生成包含输入轮廓的矩形。contours, hierarchy = cv2.findContours(morph.copy() ,cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
contour = contours[0]
draw = cv2.cvtColor(morph, cv2.COLOR_GRAY2BGR)
cv2.drawContours(draw, [contour], 0, (0,255,0), 2)
rotrect = cv2.minAreaRect(contour)
box = cv2.cv.BoxPoints(rotrect)
box = numpy.int0(box)
cv2.drawContours(draw, [box], 0, (0,0,255), 2)
cv2.imshow('image', draw); cv2.waitKey(0)
以下是翻译的结果:
这里是输出的示例:
红色描边是rect
,绿色描边是contour
。我本来希望红色描边能够包围绿色描边。
不幸的是,我无法提供输入图像。
minAreaRect()
来找到结果。 - thomasfedbminAreaRect
。您可以通过在rotrect
的左上角绘制一个圆并检查其是否合理来验证这一点。2)还可以尝试使用box = cv2.boxPoints(rect)
而不是cv2.cv.BoxPoints(...)
。抱歉,这就是我所知道的全部。 - Mikicv2.boxPoints(rect)
。通过从rotrect
绘制中心点,我已经确定minAreaRect()
实际上给出了错误的结果。 - thomasfedb