Python Draw Arrow on Image
Draw different shapes on image using Python OpenCV
In this article, you will learn to draw different spaces on a image using Python OpenCV module.
OpenCV provides different functionality to draw different shapes, like circle, rectangle, triangle, 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 face recognition program.
Technical Requirements
The technical requirements for drawing different shapes are as follows -
- Python Package
- OpenCV Package
Draw Lines
Python OpenCV module provides line() method to draw line segments. The syntax of line() method -
cv2.line(image, start_point, end_point, color, thickness)
Here, the image is the image on which line to be drawn, start_point is the starting coordinates of line, end_point is the ending coordinates of line, color is the color of line segment and thickness is the thickness of line.
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
Draw Rectangle
The rectangle() method is used to draw a simple or filled rectangle on a given image. The syntax is -
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
Draw Circle
The OpenCV has 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
Drawing Arrows
The arrowedLine() method 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, the line_type specifies type of line for drawing, shift denotes number of fractional bits in the point coordinates and tip_length is the length of 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
Drawing Ellipses
The OpenCV has 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
Drawing Text
Python OpenCV has 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
Related Articles
cv2 bitwise not
Python OpenCV Overview and Examples
Python web scraping using urllib
Python requests GET method
How to convert MySQL query result to JSON in Python
How to display data from MongoDB in HTML table using Python
CRUD operations in Python using MongoDB connector
Write Python Pandas Dataframe to CSV
Quick Introduction to Python Pandas
Python Pandas DataFrame
Python3 Tkinter Messagebox
Python get visitor information by IP address
Python Webbrowser
Python Tkinter Overview and Examples
Source: https://www.etutorialspoint.com/index.php/305-python-draw-different-shapes-on-image