Crop an image using coordinate
이전 댓글 표시
Hi,
How can I crop an image by having the top left coordinate (X1,Y1) and bottom right (X2,Y2).
I2 = imcrop(im,[x1 y1 x2 y2])
does not seem to work?
Thanks
댓글 수: 3
John BG
2017년 3월 4일
Hi Hu
this is John BG ( <mailto:jgb2012@sky.com jgb2012@sky.com> ) please check my answer, image cropping without imcrop.
If you find it useful would you please mark my answer as accepted answer?
thanks in advance
John BG
nisa sarfraz
2020년 1월 14일
I=imread(images(1).name); %crop one to get rect
this line of code give error of index matrix dimension exeeds. kindly suggest some solution
Image Analyst
2020년 1월 14일
Nisa, start a new question, and give the code that you used to load up your images structure (was it the dir function?). Your images structure is evidently empty, meaning it found not images.
filePattern = fullfile(pwd, '*.png');
images = dir(filePattern);
if isempty(images)
message = sprintf('No PNG images found in folder %s\n', pwd)
uiwait(errordlg(message))
return;
end
thisImage=imread(images(1).name);
imshow(thisImage)
% Crop one to get rect
croppedImage = imcrop(thisImage);
채택된 답변
추가 답변 (3개)
Hi Hu
A=imread('im1.jpg');imshow(A)

p=ginput(2)
p1max=max(p(:,1));p2max=max(p(:,2));p1min=min(p(:,1));p2min=min(p(:,2));
A(:,[1:p1min],:)=[];
A([1:p2min],:,:)=[];
A(:,[uint64(p1max-p1min+1):end],:)=[];
A([uint64(p2max-p2min+1):end],:,:)=[];
imshow(A)

EXPLANATION
1.
as example let's start with this image
A=imread('im1.jpg');imshow(A)
2. Selecting 2 diagonal points that define the borders you want to remove. I use command ginput but you already have the values
p=ginput(2)
3. Calculating border values from ginput points
p1max=max(p(:,1));p2max=max(p(:,2));p1min=min(p(:,1));p2min=min(p(:,2));
4. Removing on borders, one side of the frame at a time
A(:,[1:p1min],:)=[];
A([1:p2min],:,:)=[];
A(:,[uint64(p1max-p1min+1):end],:)=[];
A([uint64(p2max-p2min+1):end],:,:)=[];
5.
Check
imshow(A)
Hu
if you find these lines useful would you please mark my answer as Accepted Answer?
To any other reader, if you find this answer of any help please click on the thumbs-up vote link,
thanks in advance for time and attention
John BG
Nalini Vishnoi
2014년 10월 2일
You can try using the following command
I2 = imcrop(im,[x1 y1 x2-x1 y2-y1]);
imcrop uses the following syntax:
I2 = imcrop(I,RECT);
where RECT is a 4-element vector with the form [XMIN YMIN WIDTH HEIGHT];
댓글 수: 3
hu
2014년 10월 2일
Geoff Hayes
2014년 10월 2일
hu - please describe what you mean by ...does not work. Perhaps provide an example pair of coordinates with what you expect to be the desired outcome.
Amruta Talreja
2017년 3월 4일
0 개 추천
I2 = imcrop(B1,[12659 11677 11281 12661]); imshow(I2); I wrote this code and i am getting a blank screen. plz help.
댓글 수: 4
Walter Roberson
2017년 3월 4일
What is size(B1)?
Image Analyst
2017년 3월 4일
편집: Image Analyst
2017년 3월 4일
Try this:
I2 = imcrop(B1,[12659 11677 11281 12661]);
whos I2;
whos B1;
fprintf('Max=%f, min=%f\n', max(I2(:)), min(I2(:)));
imshow(I2, []);
Warid Islam
2019년 7월 12일
Hi,
Is it possible to crop the image manually without using a rectangle? For example, can I create a boundary manually with a mouse on the Matlab image and display the cropped image separately?
Image Analyst
2019년 7월 13일
If you use imcrop() without any arguments, you'll be in interactive drawing mode.
카테고리
도움말 센터 및 File Exchange에서 Get Started with Image Processing Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!