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