Creating your own contour in opencv using python

前端 未结 4 598
长情又很酷
长情又很酷 2021-02-07 07:00

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.

4条回答
  •  悲哀的现实
    2021-02-07 07:27

    A contour is simply a curve joining all continuous points so to create your own contour, you can create a np.array() with your (x,y) points in clockwise order

    points = np.array([[25,25], [70,10], [150,50], [250,250], [100,350]])
    

    That's it!


    There are two methods to draw the contour onto an image depending on what you need:

    Contour outline

    If you only need the contour outline, use cv2.drawContours()

    cv2.drawContours(image,[points],0,(0,0,0),2)
    

    Filled contour

    To get a filled contour, you can either use cv2.fillPoly() or cv2.drawContours() with thickness=-1

    cv2.fillPoly(image, [points], [0,0,0]) # OR
    # cv2.drawContours(image,[points],0,(0,0,0),-1)
    

    Full example code for completeness

    import cv2
    import numpy as np
    
    # Create blank white image
    image = np.ones((400,400), dtype=np.uint8) * 255
    
    # List of (x,y) points in clockwise order
    points = np.array([[25,25], [70,10], [150,50], [250,250], [100,350]])
    
    # Draw points onto image
    cv2.drawContours(image,[points],0,(0,0,0),2)
    
    # Fill points onto image
    # cv2.fillPoly(image, [points], [0,0,0])
    
    cv2.imshow('image', image)
    cv2.waitKey()
    

提交回复
热议问题