Matlab - Como escribir sobre una imagen?

 
Vista:

Como escribir sobre una imagen?

Publicado por Minoru Hono (1 intervención) el 23/06/2013 03:27:21
Hola a todos, no tengo mucha experiencia en matlab, pero con lo poco que sé logre hacer un pequeño programa para escribir sobre una foto, este tiene la opcion de elegir tipo de letra y color, es muy fácil de aplicar, puesto que utilice el comando 'gtext'...
El problema que se me genera es que debo guardar la imagen en una variable/matriz con lo que se escribio sobre esta, ya que despues debo aplicar otros procesos (entre ellos agregar objetos sobre la imagen, por ej: una estrella, aprovecho de decirlo por si alguien sabe como realizarlo pues tengo algunos problemas con el código), para luego guardarla, enviarla,imprimirla, ect.
Sé que se puede guardar cuando se habre la ventana, pero la idea es que sea automatico...
a continuación dejo el código resumido, ya que es muy largo para ponerlo completo:

%previamente la imagen ingresada
imshow(foto);
axis('image');
disp('ingrese el texto que desea y luego indique donde poner') ;
texto=input('Ingrese palabra: ','s');
hold on
disp('color del texto')
disp('1.rojo')
disp('2.amarillo')
e=1;
e1=1;
while e==1
opcion=input('ingrese opcion:');
if opcion==1
disp('tipo de letra')
disp('1.algerian')
disp('2.script')
while e1==1
x=input('ingrese opcion:');
if x==1
a=gtext(texto,'color','r');
set(a, 'FontName', 'Algerian', 'FontWeight', 'bold', 'FontSize', 18);
e1=0;
elseif x==2
a=gtext(texto,'color','r');
set(a, 'FontName', 'Script', 'FontWeight', 'bold', 'FontSize', 18);
e1=0;
else
e1=1;
end
end
e=0;
elseif opcion==2
disp('tipo de letra')
disp('1.algerian')
disp('2.script')
while e1==1
x=input('ingrese opcion:');
if x==1
a=gtext(texto,'color','y');
set(a, 'FontName', 'Algerian', 'FontWeight', 'bold', 'FontSize', 18);
e1=0;
elseif x==2
a=gtext(texto,'color','y');
set(a, 'FontName', 'Script', 'FontWeight', 'bold', 'FontSize', 18);
e1=0;
else
e1=1;
end
end
e=0;
else
e=1;%vuelve a preguntar si se ingresa un numero que no esta en las opciones
end
end
hold off

El problema que tengo para agregar el objeto es al posicionarlo en la imagen (no lo deja donde indico), este es parte del código que implemente (imagen en rgb):

% m1= imagen del objeto im=imagen donde se agrega el objeto
% tamaño de m1 55x55....menor que el tamaño de im
gris=rgb2gray(m1);
bin=gris<=128;
bw=bwlabel(bin,8);
n=1; % n= cantidad de objetos a poner
disp('elija la posicion donde quiere el objeto')
imshow(im);
[x1 y1]=ginput(n);
% x1 e y1 es el punto donde irá el centro del objeto
centro=ceil(55/2);
for n1=1:55
for n2=1:55
pixbin=bw(n1,n2);
pixm1=m1(n1,n2,1);
pixm2=m1(n1,n2,2);
pixm3=m1(n1,n2,3);
pix1=im(x1+n1-centro,y1+n2-centro,1);
pix2=im(x1+n1-centro,y1+n2-centro,2);
pix3=im(x1+n1-centro,y1+n2-centro,3);
if pixbin==1
im(x1+n1-centro,y1+n2-centro,1)=pixm1;
im(x1+n1-centro,y1+n2-centro,2)=pixm2;
im(x1+n1-centro,y1+n2-centro,3)=pixm3;
else
im(x1+n1-centro,y1+n2-centro,1)= pix1;
im(x1+n1-centro,y1+n2-centro,2)= pix2;
im(x1+n1-centro,y1+n2-centro,3)= pix3;
end
end
end
imshow(im);

Espero que me puedan responder...
De antemano muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como escribir sobre una imagen?

Publicado por Minoru (3 intervenciones) el 13/07/2013 01:54:14
El problema ya esta resuelto.
Aunque no hubo respuesta, muchas gracias a los que se dieron el trabajo de leerlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como escribir sobre una imagen?

Publicado por Alejandro (1 intervención) el 24/02/2016 00:16:59
Para escribir sobre una imagen usa la función text(), que básicamente su sintaxis es text(x_0,y_0, texto), y para guardar automáticamente ña instrucción es imwrite.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar