Javascript required
Skip to content Skip to sidebar Skip to footer

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

Python OpenCV Line

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

Python OpenCV Rect

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

Python OpenCV Circle

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

Python OpenCV Arrows

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

Python OpenCV Ellipsees

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

Python OpenCV Puttext

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

Python Draw Arrow on Image

Source: https://www.etutorialspoint.com/index.php/305-python-draw-different-shapes-on-image