The program showing "Error using - Matrix dimensions must agree. out = im2double(a) - im2double(d);"
Mostrar comentarios más antiguos
a=imread('Whiteimage.jpg');
b=imread('vegetableimage.jpg');
c=rgb2gray(b);
d=im2bw(c);
out=im2double(a)-im2double(d);
se=strel('disk',6);
frameout=imdilate(out,se);
[L,n]=bwlabel(frameout,8);
s=regionprops(L,'Area','Centroid','BoundingBox','Perimeter');
imshow(b)
Respuestas (1)
Jan
el 12 de Dic. de 2018
The error message is clear: a and d have different sizes. While d is a 2D matrix, a is most likely an RGB array with 3 dimensions. Check this using the debugger. Type this in the command window:
dbstop if error
Run the code again. When it stops at the error, check the sizes:
size(a)
size(d)
1 comentario
Guillaume
el 17 de Dic. de 2018
Actually, if the two images are the same width and height, it shouldn't matter if one is greyscale and the other RGB, at least on versions >= R2016b. With implicit expansion, the grey image would be subtracted from each colour channel.
Therefore, either the OP is using an old version of matlab (in which case use bsxfun for the subtraction) or the images are completely different size (in which case, maybe they should be resized to a common size?)
Categorías
Más información sobre Scope Variables and Generate Names en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!