Manipulating Image Properties (Size, Color Channels, etc.) using OpenCV and Python

Image manipulation is a vital aspect of computer vision and image processing. OpenCV, which stands for Open Source Computer Vision Library, is a popular open-source library that provides various tools and functions for image manipulation and computer vision tasks. In this article, we will explore how to manipulate image properties like size, color channels, and more using OpenCV and Python.

Changing Image Size

Resizing an image is a common operation in image processing. OpenCV provides a simple way to resize an image using the resize() function. To change the size of an image, you need to provide the desired dimensions to this function.

Here's an example that demonstrates resizing an image to a specific width and height:

import cv2

# Load the image
image = cv2.imread('image.jpg')

# Get the original image dimensions
original_height, original_width = image.shape[:2]

# Define the desired width and height
desired_width = 640
desired_height = 480

# Resize the image
resized_image = cv2.resize(image, (desired_width, desired_height))

# Display the resized image
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Extracting Color Channels

Image color channels represent the different color components that make up an image. Typical images have three color channels: red, green, and blue (RGB). You can extract these color channels individually using OpenCV.

Here's an example that shows how to extract the red, green, and blue channels from an image:

import cv2
import numpy as np

# Load the image
image = cv2.imread('image.jpg')

# Split the image into its color channels
b, g, r = cv2.split(image)

# Create a blank image with only the blue channel
blue_channel = np.zeros_like(image)
blue_channel[:,:,0] = b

# Create a blank image with only the green channel
green_channel = np.zeros_like(image)
green_channel[:,:,1] = g

# Create a blank image with only the red channel
red_channel = np.zeros_like(image)
red_channel[:,:,2] = r

# Display the individual color channels
cv2.imshow('Blue Channel', blue_channel)
cv2.imshow('Green Channel', green_channel)
cv2.imshow('Red Channel', red_channel)
cv2.waitKey(0)
cv2.destroyAllWindows()

Adjusting Image Brightness and Contrast

Brightness and contrast adjustments are essential for enhancing image quality and improving visibility. OpenCV provides a function called convertScaleAbs() that can be used to adjust the brightness and contrast of an image.

Here's an example that demonstrates how to adjust the brightness and contrast of an image:

import cv2

# Load the image
image = cv2.imread('image.jpg')

# Increase brightness and contrast
adjusted_image = cv2.convertScaleAbs(image, alpha=1.2, beta=10)

# Display the adjusted image
cv2.imshow('Adjusted Image', adjusted_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Conclusion

OpenCV, combined with the power of Python, offers a wide range of image manipulation capabilities. In this article, we covered the basics of manipulating image properties such as size, color channels, brightness, and contrast using OpenCV and Python. Armed with this knowledge, you can now explore the endless possibilities of image manipulation and processing in your computer vision projects.


noob to master © copyleft