How to Perform Matrix Transformation in OpenCV Python?
OpenCV, an open-source computer vision library, is widely used in digital image processing. It can work with images and videos, and it provides a plethora of functions to perform various operations on them. One of the most common requirements in image processing is to transform an image or its parts. This article will focus on matrix transformation in OpenCV Python.
A matrix transformation is a process of changing the geometrical properties of an image by transforming its pixel positions based on a transformation matrix. In OpenCV Python, matrix transformations are done using the cv2.warpAffine() function. This function applies an affine transformation to an image. To perform matrix transformation using OpenCV Python, follow the steps below:
Step 1: Import Required Libraries
Before performing matrix transformation using OpenCV Python, we first need to import the required libraries. In this example, we will import the OpenCV library:
import cv2
Step 2: Load the Image
The next step is to load the image we want to perform matrix transformation on. We can load an image using the cv2.imread() function. This function takes the path of the image file as a parameter and returns the image as a NumPy array.
img = cv2.imread('image.jpg')
Step 3: Define the Transformation Matrix
The transformation matrix defines how the image pixels will be transformed. It is a 2×3 matrix of floating-point values. OpenCV provides different methods to create a transformation matrix for different types of transformations, such as scaling, rotation, translation, and shearing.
In this example, we will create a transformation matrix to perform a horizontal flip on the image. The horizontal flip transformation matrix can be defined as:
M = [[-1, 0, width-1],
[0, 1, 0]]
where width
is the width of the image.
height, width = img.shape[:2]
M = np.float32([[-1, 0, width-1], [0, 1, 0]])
Step 4: Apply the Transformation
Once the transformation matrix is defined, we can apply it to the image using the cv2.warpAffine() function. This function takes the input image and the transformation matrix as parameters and returns the transformed image.
img_transformed = cv2.warpAffine(img, M, (width, height))
Step 5: Display the Transformed Image
Finally, we can display the transformed image using the cv2.imshow() function. This function takes the window name and the image as parameters. We can also use the cv2.waitKey() function to wait for a keyboard event before closing the window.
cv2.imshow('Transformed Image', img_transformed)
cv2.waitKey(0)
cv2.destroyAllWindows()
And that’s it! The full code for performing matrix transformation on an image using OpenCV Python is as follows:
import cv2
import numpy as np
# Load the image
img = cv2.imread('image.jpg')
# Define the transformation matrix
height, width = img.shape[:2]
M = np.float32([[-1, 0, width-1], [0, 1, 0]])
# Apply the transformation
img_transformed = cv2.warpAffine(img, M, (width, height))
# Display the transformed image
cv2.imshow('Transformed Image', img_transformed)
cv2.waitKey(0)
cv2.destroyAllWindows()
Conclusion
Matrix transformation is a common operation in digital image processing. In OpenCV Python, we can perform matrix transformation using the cv2.warpAffine() function. This function takes an input image and a transformation matrix as parameters and returns the transformed image. To create a transformation matrix, we can use different methods provided by OpenCV for different types of transformations, such as scaling, rotation, translation, and shearing. By following the steps mentioned in this article, you can easily perform matrix transformation on an image using OpenCV Python.