Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何使用opencv python绘制轮廓检测到的四个点_Python 2.7_Opencv_Image Processing - Fatal编程技术网

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

Python 2.7 如何使用opencv python绘制轮廓检测到的四个点,python-2.7,opencv,image-processing,Python 2.7,Opencv,Image Processing,我需要知道如何在四个点之间画线?所有点均由轮廓线检测。 共有四个红色点。如下图所示,使用cv2.findContours检测这些点。之后,我需要在每个点上画一条线,就像一个矩形。有人能帮我解决这个问题吗?我也用convexhull来做这个,但我不能解决它 这是我使用的代码 ret, frame = cap.read() hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) RedMask = cv2.inRange(hsv,(0,100,100),(10,2

我需要知道如何在四个点之间画线?所有点均由轮廓线检测。 共有四个红色点。如下图所示,使用cv2.findContours检测这些点。之后,我需要在每个点上画一条线,就像一个矩形。有人能帮我解决这个问题吗?我也用convexhull来做这个,但我不能解决它

这是我使用的代码

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)
正如它所说的,您可以按以下方式使用它

cv2.drawContours(img, contours, index, color, thickness)
如果通过
index=-1
,它将绘制所有轮廓。如果您通过
index=3
,它将在等高线数组中绘制第四条等高线。在这种情况下,如果您的convexHull数组仅包含一个轮廓,则可以传递
索引=-1
尝试cv2。多段线:

#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)

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

我以前是这样做的。它不起作用。谢谢你的回答。