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