Crop part of an image

3 次查看(过去 30 天)
Hamed
Hamed 2013-4-18
Hi there.
i've an image : (120 * 160 px)
I want to crop part of that image where number is.
Finally result must be : (22 * 39 px)
Thank you for your help.

回答(1 个)

Jan
Jan 2013-4-18
编辑:Jan 2013-4-18
You did not explain the type of the image variable. It might be a gray-scale image of type UINT8. Row a 3D array of an RGB image the procedure must be modified.
[row, col] = find(img);
cropped = img(min(col):max(col), min(row):max(row));
Note that the image might be transposed when it is displayed, so perhaps you have to swap row and col.
  6 个评论
Image Analyst
Image Analyst 2013-4-19
Jan's code works for binary images. An alternate method would be to use regionprops() to get the bounding box, then use imcrop().
Ahmed Fasih
Ahmed Fasih 2016-6-21
Flipped row & col.
>> z = blkdiag(zeros(1,3),[1 2; 3 0], zeros(3,1))
z =
0 0 0 0 0 0
0 0 0 1 2 0
0 0 0 3 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
>> [row, col]=find(z)
row =
2
3
2
col =
4
4
5
>> z(min(row):max(row), min(col):max(col))
ans =
1 2
3 0

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by