- 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 crop an image at a random location?
To crop an image at a random location, we apply RandomCrop() transformation. It's one of the many important transforms provided by the torchvision.transforms module.
The RandomCrop() transformation accepts both PIL and tensor images. A tensor image is a torch tensor with shape [C, H, W], where C is the number of channels, H is the image height and W is the image width.
If the image is neither a PIL image nor tensor image, then we first convert it to a tensor image and then apply RandomCrop().
Syntax
torchvision.transforms.RandomCrop(size)(img)
where size is the desired crop size. size is a sequence like (h, w), where h and w are the height and width of the cropped image. If size is an int, then the cropped image will be a square image.
It returns the cropped image at a random location of given size.
Steps
We could use the following steps to crop an image at a random location with given size −
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 T from PIL import Image
Read the input image. The input image is a PIL image or a torch tensor.
img = Image.open('meteor.jpg')
Define a transform to crop the image at random location. The crop size is (200,250) for rectangular crop and 250 for square crop. Change the crop size according your need.
# transform for rectangular crop transform = T.RandomCrop((200,250)) # transform for square crop transform = T.RandomCrop(250)
Apply the above-defined transform on the input image to crop the image at random location.
img = transform(img)
Visualize the cropped image.
img.show()
Input Image
This image is used as the input in all the following examples.
Example 1
The following Python3 program shows how to crop an input PIL image at a random location.
# import required libraries import torch import torchvision.transforms as T from PIL import Image # read the input image img = Image.open('meteor.png') # define transform to crop the image at # random location transform = T.RandomCrop((250,500)) img = transform(img) img.show()
Output
It will produce the following output −
Example 2
import torch import torchvision.transforms as T from PIL import Image img = Image.open('lena.jpg') transform = T.RandomCrop((250,500), padding=50) img = transform(img) img.show()
Output
It will produce the following output. Notice that the padding is random.
Example 3
# import required libraries import torch import torchvision.transforms as T from PIL import Image import matplotlib.pyplot as plt # read the input image img = Image.open('meteor.png') # define the transform with crop size transform = T.RandomCrop((100,150)) # crop four images imgs = [transform(img) for _ in range(4)] # display these cropped images fig = plt.figure(figsize=(7,3)) rows, cols = len(imgs),1 for j in range(0, len(imgs)): fig.add_subplot(rows, cols, j+1) plt.imshow(imgs[j]) #plt.xticks([]) #plt.yticks([]) plt.show()
Output
It will produce the following output −
- Related Articles
- How to crop an image at center in PyTorch?
- PyTorch – How to perform random affine transformation of an image?
- How to crop an image using crop() function in Node Jimp?
- How to convert an image to a PyTorch Tensor?
- PyTorch – How to convert an image to grayscale?
- PyTorch – How to resize an image to a given size?
- PyTorch – How to rotate an image by an angle?
- How to adjust saturation of an image in PyTorch?
- How to crop an image automatically using imagecropauto() function in PHP?
- How to check if an Image has crop applied using FabricJS?
- How to crop an image along the X-axis using FabricJS?
- How to crop an image along the Y-axis using FabricJS?
- How to pad an image on all sides in PyTorch?
- How to draw bounding boxes on an image in PyTorch?
- How to adjust the brightness of an image in PyTorch?
