Skip to content
Related Articles

Related Articles

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

Improve Article
Save Article
  • Last Updated : 31 Aug, 2021
Improve Article
Save Article

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




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


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!