Crop part of an image
3 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
回答(1 个)
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
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
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!