Cropping out two images from one big image by manually selecting the cropping are

1 view (last 30 days)
How can I crop two images out from one big image by manually selecting the region for cropping out with a rectangle for example? Additionally, how can I extract the rows and columns that I selected with the rectangle?

Accepted Answer

Ameer Hamza
Ameer Hamza on 25 Oct 2020
Try this code
img = imread('pears.png');
figure();
ax1 = axes();
imshow(img, 'Parent', ax1)
fprintf('Drag a rectange on the image.\n')
roi = drawrectangle(ax1);
img_small = imcrop(img, roi.Position);
figure();
ax2 = axes();
imshow(img_small, 'Parent', ax2)
  4 Comments
windmill
windmill on 28 Oct 2020
Edited: windmill on 28 Oct 2020
Thanks, I got it! I just tried to modfify the code so I can use my images that I converted to grayscale images, but I don't know why it won't work anymore... Do you see the problem?
image = imread('Test016.tif');
max(max(image))
image2 = mat2gray(image)*255
figure();
ax1 = axes();
imshow(image2, 'Parent', ax1)
fprintf('Draw the ROI on the image using the rectangle.\n')
roi = drawrectangle(ax1);
roiPos=roi.Position;
cropped_image = imcrop(image2, roi.Position);
figure();
ax2 = axes();
imshow(cropped_image, 'Parent', ax2)
Ameer Hamza
Ameer Hamza on 29 Oct 2020
Try this code
image = imread('pears.png');
image2 = rgb2gray(image);
figure();
ax1 = axes();
imshow(image2, 'Parent', ax1)
fprintf('Draw the ROI on the image using the rectangle.\n')
roi = drawrectangle(ax1);
roiPos=roi.Position;
cropped_image = imcrop(image2, roi.Position);
figure();
ax2 = axes();
imshow(cropped_image, 'Parent', ax2)

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 25 Oct 2020
Did you check out the documentation for imcrop(), or rbbox()?

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!