I have a set of boundary points of an object.

I want to draw it using opencv as contour.

I have no idea that how to convert my points to contour representation.

To the same contour representation which is obtained by following call

```
contours,_ = cv2.findContours(image,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
```

Any ideas?

Thanks

By looking at the format of the **contours** I would think something like this should be sufficient:

```
contours = [numpy.array([[1,1],[10,50],[50,50]], dtype=numpy.int32) , numpy.array([[99,99],[99,60],[60,99]], dtype=numpy.int32)]
```

This small program gives an running example:

```
import numpy
import cv2
contours = [numpy.array([[1,1],[10,50],[50,50]], dtype=numpy.int32) , numpy.array([[99,99],[99,60],[60,99]], dtype=numpy.int32)]
drawing = numpy.zeros([100, 100],numpy.uint8)
for cnt in contours:
cv2.drawContours(drawing,[cnt],0,(255,255,255),2)
cv2.imshow('output',drawing)
cv2.waitKey(0)
```

To create your own contour from a python list of points L

```
L=[[x1,y1],[x2,y2],[x3,y3],[x4,y4],[x5,y5],[x6,y6],[x7,y7],[x8,y8],[x9,y9],...[xn,yn]]
```

Create a numpy array **ctr** from L, reshape it and force its type

```
ctr = numpy.array(L).reshape((-1,1,2)).astype(numpy.int32)
```

**ctr** is our new countour, let's draw it on an existing **image**

```
cv2.drawContours(image,[ctr],0,(255,255,255),1)
```

Licensed under: CC-BY-SA with attribution

Not affiliated with: Stack Overflow