Crop part of an image

3 visualizaciones (últimos 30 días)
Hamed
Hamed el 18 de Abr. de 2013
Comentada: Ahmed Fasih el 21 de Jun. de 2016
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.

Respuestas (1)

Jan
Jan el 18 de Abr. de 2013
Editada: Jan el 18 de Abr. de 2013
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 comentarios
Image Analyst
Image Analyst el 19 de Abr. de 2013
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 el 21 de Jun. de 2016
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

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by