How to Draw Filled Ellipses in OpenCV using Python
In image processing and computer vision, drawing shapes is a fundamental operation. It is essential to have a good grasp of the different ways to create and manipulate shapes to produce the desired results. Ellipses are among the most frequently used shapes, and knowing how to draw them is a must for any image processing application. In this article, we will walk you through the steps to draw filled ellipses in OpenCV using Python.
Step 1: Import the Required Libraries
OpenCV is one of the most popular image processing libraries that provide a range of functions to manipulate images. To start, we need to import the OpenCV library and NumPy library. NumPy is a widely used library that provides support for multi-dimensional arrays and matrices. We will use NumPy to create the images on which we will draw the ellipses. Here’s the code to import the libraries:
import cv2
import numpy as np
Step 2: Create Blank Images
Now that we have our libraries loaded, we will create a blank image on which we will draw an ellipse. We can create an image with the desired dimensions and initialize the pixel values to 0. Here is a code snippet for creating the blank image:
# create a blank image
width = 512
height = 512
img = np.zeros((width, height, 3), dtype=np.uint8)
In this code, we create a 512 x 512 blank image. The “dtype” parameter is set to uint8, which means that the image pixels will have integer values ranging from 0 to 255.
Step 3: Draw the Ellipse
To draw the ellipse, we need to specify the center point (cx, cy), the major and minor axis lengths (a, b), the angle of rotation (theta), and the color of the ellipse. Once we have these values, we can use the “cv2.ellipse()” function to draw the ellipse. Here is the code to draw the ellipse:
# draw a filled ellipse
cx, cy = int(width/2), int(height/2)
a, b = int(width/4), int(height/8)
theta = 45
color = (0, 255, 0)
thickness = -1
cv2.ellipse(img, (cx, cy), (a, b), theta, 0, 360, color, thickness)
In this code, we specify the center point (cx, cy) as the center point of the image. The major and minor axis lengths (a, b) are set to one-fourth of the width and one-eighth of the height, respectively. The angle of rotation (theta) is set to 45 degrees. The color of the ellipse is set to green (0, 255, 0), and the thickness parameter is set to -1 to draw a filled ellipse.
Step 4: Display the Image
Now that we have drawn the ellipse, it’s time to display the image with the ellipse. We can use the “cv2.imshow()” function to display the image. Here’s the code to display the image:
# display the image
cv2.imshow('Ellipse', img)
cv2.waitKey(0)
In this code, we use the “cv2.imshow()” function to display the image, and we pass the image and a title to the function. The “cv2.waitKey()” function is used to wait for a key press to close the window. With this code, we can see the filled ellipse on the blank image.
Step 5: Save the Image
Finally, we can save the image to a file using the “cv2.imwrite()” function. Here’s the code to save the image:
# save the image
cv2.imwrite('filled_ellipse.jpg', img)
In this code, we use the “cv2.imwrite()” function to save the image to a file. We pass the filename and the image to the function, and the image is saved as a JPEG file.
Conclusion
In this article, we have seen how to draw filled ellipses in OpenCV using Python. We learned to create a blank image, draw the ellipse, display the image, and save the image to a file. By following these steps, you can add filled ellipses to your image processing pipeline and create more robust and efficient algorithms.