Draw different shapes on image using Python OpenCV
In this article, you will learn to draw different spaces on an image using the Python OpenCV module.
OpenCV provides different functionality to draw different shapes, like circles, rectangles, triangles, ellipses, and so on. This is basically required in building a computer vision project, where we usually modify the image by drawing some shapes. For example, to draw a rectangle for highlighting the detected face in a face recognition program.
Technical Requirements
The technical requirements for drawing different shapes are as follows-
- Python Package
- OpenCV Package
Python OpenCV Draw Lines
Python OpenCV module provides a line() method to draw line segments. The syntax of the line() method-
cv2.line(image, start_point, end_point, color, thickness)
Here, the image is the image on which the line to be drawn, start_point is the starting coordinates of the line. The coordinates are represented as tuples of two values, i.e., (x, y). The end_point is the ending coordinates of the line. The coordinates are represented as tuples of two values, i.e., (x, y). The color is the color of the line segment, and the thickness is the thickness of the line in px.
Example of Draw Lines
import cv2
# image path
path = r'nature.jpg'
# using imread()
img = cv2.imread(path)
cv2.line(img, (0, 0), (400, 400), (255,0,0), 3)
cv2.line(img, (0, 200), (200, 0), (198, 33, 6), 4)
cv2.line(img, (200, 0), (200, 400), (7, 35, 122), 3)
cv2.line(img, (200, 0), (400, 400), (243, 240, 35), 3)
cv2.imshow('image', img)
cv2.waitKey(0);
cv2.destroyAllWindows();
cv2.waitKey(1)
Output of the above code:
Python OpenCV Draw Rectangle
The rectangle() method of Python OpenCV is used to draw a simple or filled rectangle on a given image. Syntax-
cv2.rectangle(image, start_point, end_point, color, thickness)
Example
import cv2
# image path
path = r'nature.jpg'
# using imread()
img = cv2.imread(path)
cv2.rectangle(img, (10, 10), (100, 100), (7, 35, 122), 3)
cv2.rectangle(img, (150, 150), (300, 300), (129, 255, 43 ), -1)
cv2.imshow('image', img)
cv2.waitKey(0);
cv2.destroyAllWindows();
cv2.waitKey(1)
Output of the above code:
Python OpenCV Draw Circle
OpenCV has a circle() method to draw a simple or filled circle on a given image.
cv2.circle(image, center_coordinates, radius, color, thickness)
Example
import cv2
# image path
path = r'nature.jpg'
# using imread()
img = cv2.imread(path)
cv2.circle(img, (50, 50), 50, (66, 9, 47), 3)
cv2.circle(img, (250, 200), 60, (52, 229, 81), -1)
cv2.imshow('image', img)
cv2.waitKey(0);
cv2.destroyAllWindows();
cv2.waitKey(1)
Output of the above code:
Python OpenCV Drawing Arrows
The arrowedLine() method of Python OpenCV allows us to create an arrow on a specified image. The syntax is -
arrowedLine(img, start_point, end_point, color, thickness, line_type, shift, tip_length)
In the above syntax, line_type specifies the type of line for drawing, shift denotes the number of fractional bits in the point coordinates, and the tip_length is the length of the arrow tip in relation to the arrow length.
Example
import cv2
# image path
path = r'nature.jpg'
# using imread()
img = cv2.imread(path)
cv2.arrowedLine(img, (100, 100), (200, 100), (63, 52, 155), 3, 8, 0, 0.1)
cv2.arrowedLine(img, (170, 170), (220, 170), (220, 25, 6), 3, cv2.LINE_AA, 0, 0.3)
cv2.imshow('image', img)
cv2.waitKey(0);
cv2.destroyAllWindows();
cv2.waitKey(1)
Output of the above code:
Python OpenCV Drawing Ellipses
The OpenCV has an ellipse() method to draw a simple or filled ellipse on a given image.
ellipse(img, center, axes, angle, start_angle, end_angle, color, thickness)
Example
import cv2
# image path
path = r'nature.jpg'
# using imread()
img = cv2.imread(path)
cv2.ellipse(img, (80, 80), (20, 50), 0, 0, 360, (16, 248, 220), 3)
cv2.ellipse(img, (200, 200), (10, 50), 0, 0, 360, (219, 9, 222), 3)
cv2.imshow('image', img)
cv2.waitKey(0);
cv2.destroyAllWindows();
cv2.waitKey(1)
Output of the above code:
Python OpenCV Drawing Text
Python OpenCV has a putText() method to draw a text string on a given image. The syntax of putText() is -
putText(image, text, org, font, fontScale, color, thickness)
Example
import cv2
# image path
path = r'nature.jpg'
# using imread()
img = cv2.imread(path)
x1 = 'Our Beautiful Nature'
x2 = 'etutorialspoint.com'
cv2.putText(img, x1, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1,(0,0,255),2 )
cv2.putText(img, x2, (10, 70), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,0,0),1 )
cv2.imshow('image', img)
cv2.waitKey(0);
cv2.destroyAllWindows();
cv2.waitKey(1)
Output of the above code:
Related Articles
Python OpenCV Overview and ExamplesDraw different shapes on image using Python OpenCV
OpenCV Logical Operators- Bitwise AND, OR, NOR, XOR
Python OpenCV Histogram of Grayscale Image
Python OpenCV Image Filtering
Python OpenCV Overlaying or Blending Two Images
Python OpenCV Histogram of Color Image
Arithmetic Operations on Images using Python OpenCV
Detect Specific Color From Image using Python OpenCV
Capture a video in Python OpenCV and save
Contour Detection using Python OpenCV
Python OpenCV ColorMap
Adaptive Thresholding in Python OpenCV
Geometric Transformation OpenCV Python
Python Turtle Graphics Overview
Python Pandas DataFrame
Python3 Tkinter Messagebox
Python get visitor information by IP address
Python Webbrowser
Python Tkinter Overview and Examples