如何使用opencv python绘制轮廓检测到的四个点

时间:2014-08-25 09:51:56

标签: python-2.7 opencv image-processing

我需要知道如何在四点之间画线?所有点都由轮廓检测。 有四个红点。如下所示,使用cv2.findContours检测这些点。我需要在每个点上绘制线条,如矩形。有人可以帮我解决这个问题吗?我也使用了凸壳来做到这一点,但我无法解决它。

enter image description here

这是我使用的代码

ret, frame = cap.read()
hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) 
RedMask = cv2.inRange(hsv,(0,100,100),(10,255,255))
contours1, _ = cv2.findContours(RedMask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) 
for cnt1 in contours1: 
   #area = cv2.contourArea(cnt1) 
   #Draw it 
   #cv2.drawContours(frame,[cnt],0,(255,0,0),2)

   hull = cv2.convexHull(cnt1)
   cv2.drawContours(frame,hull,3,(255,0,0),2)

2 个答案:

答案 0 :(得分:0)

正如here所述,您可以通过以下方式使用它。

cv2.drawContours(img, contours, index, color, thickness)

如果您通过index=-1,它将绘制所有轮廓。如果传递index=3,它将在轮廓数组中绘制第四个轮廓。在此,如果您的convexHull数组只包含一个轮廓,则可以传递index=-1

答案 1 :(得分:0)

尝试cv2.polylines:

#first we need to change the shape of the array
(count,_,_) = hull.shape
hull.ravel()
hull.shape = (count,2)

#some blank img to drow on
blank = np.zeros_like(frame)

#drawing
cv2.polylines(blank,np.int32([hull]),True,255)

请注意,我们需要转换数组的数据类型(基于this answer