- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
PyTorch – How to convert an image to grayscale?
To convert an image to grayscale, we apply Grayscale() transformation. It's one of the transforms provided by the torchvision.transforms module. This module contains many important transformations that can be used to perform different types manipulations on the image data.
Grayscale() transformation accepts both PIL and tensor images or a batch of tensor images. A tensor image is a PyTorch Tensor with shape [3, H, W], where H is the image height and W is the image width. A batch of tensor images is also a torch tensor with [B, 3, H, W]. B is the number of images in the batch.
Syntax
torchvision.transforms.Grayscale()(img)
It returns a grayscale image.
Steps
We could use the following steps to convert an image to grayscale −
Import the required libraries. In all the following examples, the required Python libraries are torch, Pillow, and torchvision. Make sure you have already installed them.
import torch import torchvision import torchvision.transforms as transforms from PIL import Image
Read the input image. The input image is a PIL image or a torch tensor.
img = Image.open('laptop.jpg')
Define a transform to convert the original input image to grayscale.
transform = transforms.Grayscale()
Apply the above defined transform on the input image convert it to grayscale.
img = transform(img)
Visualize the grayscaled image.
img.show()
Input Image
The following image is used as the input in both the examples.
Example 1
The following Python3 program converts the input PIL image to grayscale.
# import required libraries import torch import torchvision.transforms as transforms from PIL import Image # Read the image img = Image.open('laptop.jpg') # define a transform to convert the image to grayscale transform = transforms.Grayscale() # apply the above transform on the image img = transform(img) # dispaly the image img.show() # num of output channels = 1 print(img.mode)
Output
It will produce the following output −
Note that the mode of the grayscale image is L. The grayscale image has a single channel.
Example 2
The following Python3 program shows how to convert an input image to grayscale.
# Python program to convert an image to grayscale # import required libraries import torch import torchvision.transforms as transforms from PIL import Image # Read the image img = Image.open('laptop.jpg') # define a transform to convert the image to grayscale transform = transforms.Grayscale(3) # apply the above transform on the image img = transform(img) # display the image img.show() # the num of output channels =3, R=G=B, but Gray image print(img.mode)
Output
It will produce the following output −
Note that the mode of output gray image is RGB. It has three channels, Red, Green, and Blue, but it's a grayscale image.
- Related Articles
- How to convert an image to a PyTorch Tensor?
- How to convert a colored image to grayscale using Java OpenCV library?
- How can scikit-learn be used to convert an image from RGB to grayscale in Python?
- Converting an Image to Grayscale using CSS3
- Converting an image from colour to grayscale using OpenCV
- PyTorch – How to rotate an image by an angle?
- How to save an array as a grayscale image with Matplotlib/Numpy?
- PyTorch – How to resize an image to a given size?
- How to crop an image at center in PyTorch?
- How to adjust saturation of an image in PyTorch?
- How to pad an image on all sides in PyTorch?
- PyTorch – How to perform random affine transformation of an image?
- PyTorch – How to crop an image at a random location?
- How to draw bounding boxes on an image in PyTorch?
- How to adjust the brightness of an image in PyTorch?
