Connect new point to the previous point on a image with a straight line in Opencv-Python

OpenCV-Python is a library of Python bindings designed to solve computer vision problems. Let’s see how to Connect a new point to the previous point on an image with a straight line.

Step 1: Draw points on image:

On a image we can mark points using cv2.circle( ) method. This method is used to draw a circle on any image.

Syntax: cv2.circle(image, center_coordinates, radius, color, thickness)

Parameters: This method will take the following parameters:



  • image: It is the image on which circle is to be drawn.
  • center_coordinates: It is the center coordinates of the circle. The coordinates are represented as tuples of two values i.e. (X coordinate value, Y coordinate value).
  • radius: It is the radius of the circle.
  • color: It is the color of the borderline of the circle to be drawn. For BGR, we pass a tuple. eg: (255, 0, 0) for blue color.
  • thickness: It is the thickness of the circle borderline in px. The thickness of -1 px will fill the rectangle shape by the specified color.

Return: It returns an image with a circle drawn on it.

Step 2: Joining two points through a straight line:

We can join two points on an image using the cv2.line() method. This method is used to draw a line on any image.

Syntax: cv2.circle(image, center_coordinates, radius, color, thickness)

Parameters: This method will take the following parameters:

  • image: It is the image on which circle is to be drawn.
  • center_coordinates: It is the center coordinates of the circle. The coordinates are represented as tuples of two values i.e. (X coordinate value, Y coordinate value).
  • radius: It is the radius of the circle.
  • color: It is the color of the borderline of the circle to be drawn. For BGR, we pass a tuple. eg: (255, 0, 0) for blue color.
  • thickness: It is the thickness of the circle borderline in px. The thickness of -1 px will fill the rectangle shape by the specified color.

Return Value: It returns an image with a line drawn on it.

Below is the implementation:

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing required packages
import cv2
import numpy as np
  
# mouse call back function
def click_event(event, x, y,
                flags, params):
    
    # if the left button of mouse 
    # is clicked then this 
    # condition executes
    if event == cv2.EVENT_LBUTTONDOWN:
        
        # appending the points we
        # clicked to list
        points.append((x,y))
          
        # marking the point with a circle
        # of center at that point and 
        # small radius
        cv2.circle(img,(x,y), 4
                   (0, 255, 0), -1)
          
        # if length of points list 
        # greater than2 then this
        # condition executes
        if len(points) >= 2:
            
            # joins the current point and
            # the previous point in the
            # list with a line
            cv2.line(img, points[-1], points[-2],
                     (0, 255, 255), 5)
              
        # displays the image
        cv2.imshow('image', img)
          
# making an black image
# of size (512,512,3)
# create 3-d numpy 
# zeros array
img = np.zeros((512, 512, 3),
             np.uint8)
  
# decalre a list to append all the 
# points on the image we clicked 
points = []
  
# show the image
cv2.imshow('image',img)
  
# setting mouse call back
cv2.setMouseCallback('image',
                     click_event)
  
# no waiting
cv2.waitKey(0)
  
# To close the image
# window that we opened
cv2.destroyAllWindows()

chevron_right


 
 

 




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.