Mastering the Basics OpenCV: Exploring Image Smoothing, Resizing, and Cropping Techniques
Table of contents
Introduction
In this blog post, we delve into the world of image processing and explore the versatile techniques of image smoothing, resizing, and cropping. Discover how these fundamental techniques can transform your images, improve visual quality, and optimize them for various applications. Learn where and why these techniques are used in fields such as photography, web design, graphic design, computer vision, and more. Whether you're a beginner or a seasoned professional, this comprehensive guide will equip you with the knowledge and skills to enhance your images and unlock their full potential.
Image Smoothing
import cv2
# Load the image
image = cv2.imread("input_image.jpg")
# Apply Gaussian blur for image smoothing
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)
# Display the original and blurred images
cv2.imshow("Original Image", image)
cv2.imshow("Blurred Image", blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
In the line blurred_image = cv2.GaussianBlur(image, (5, 5), 0)
, we are applying the Gaussian blur technique to the image
using the cv2.GaussianBlur()
function.
Here's a breakdown of the function's arguments:
image
: This is the input image on which we want to apply the Gaussian blur. It should be a NumPy array representing the image.(5, 5)
: (In simple words it's a neighbourhood pixel average to blurr the pixels) This is kernel size or the size of the blurring filter. In this case, we are using a 5x5 kernel. A larger kernel size will result in a stronger blur effect, while a smaller kernel size will produce a milder blur.0
: This is the standard deviation of the Gaussian distribution in the x-direction. By setting it to 0, we allow OpenCV to automatically calculate the standard deviation based on the kernel size. Alternatively, you can specify a non-zero value if you want to use a specific standard deviation.
The function returns the blurred image, which is then assigned to the variable blurred_image
. This variable can be used for further processing or display purposes.
By adjusting the kernel size and the standard deviation, you can control the strength of the blurring effect applied to the image.
Image Resizing
import cv2
# Load the image
image = cv2.imread("input_image.jpg")
# Define the desired width and height for resizing
desired_width = 800
desired_height = 600
# Resize the image using the desired width and height
resized_image = cv2.resize(image, (desired_width, desired_height))
# Display the original and resized images
cv2.imshow("Original Image", image)
cv2.imshow("Resized Image", resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
In line resized_image = cv2.resize(image, (desired_width, desired_height))
resizes the image
to a new size specified by desired_width
and desired_height
.
Image Cropping Techniques
import cv2
# Load the image
image = cv2.imread("input_image.jpg")
# Define the coordinates for cropping (x, y, width, height)
x = 100
y = 100
width = 300
height = 200
# Crop the image using the defined coordinates
print(image.shape)
cropped_image = image[y:y+height, x:x+width]
print(cropped_image.shape)
# Display the original and cropped images
cv2.imshow("Original Image", image)
cv2.imshow("Cropped Image", cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
[y:y+height, x:x+width]
: This part represents array slicing in Python. It specifies the region of interest (ROI) within the image that we want to crop.
y:y+height
represents the vertical range of the ROI. They
value indicates the starting pixel in the y-axis (top), andy+height
represents the ending pixel in the y-axis (bottom) of the ROI.x:x+width
represents the horizontal range of the ROI. Thex
value indicates the starting pixel in the x-axis (left), andx+width
represents the ending pixel in the x-axis (right) of the ROI.
To understand this better I used print(image.shape)
and print(cropped_image.shape)
so that you can see the difference in the resolution between the original image and cropped image
Catch me up on my socials: https://bento.me/harshitpy and I will meet you in the next one ๐
Thank you so much for reading ๐
You can support me here BuyMeACoffee
Subscribe to my newsletter
Read articles from Harshit Jain directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Harshit Jain
Harshit Jain
Hey!, I'm a Python dev automation expert, passionate about solving complex problems through creative approaches.