Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

This code isn't working. How do I change the datatype of the image B such that it is also 128*128, the error is :

1 visualización (últimos 30 días)
Error using .* Matrix dimensions must agree.
Error in fy (line 33) circle_image = double(B).* circleMat;
A=imread('search.jpg');
figure,imshow(A); title('Original Image');
%Convert the Image to binary
B=im2bw(A);
%Fill the holes
C=imfill(B,'holes');
%Label the connected components
[Label,Total]=bwlabel(C,8);
%Rectangle containing the region
Sdata=regionprops(Label,'BoundingBox');
%Crop all the objects
for i=1:1%Total
Img=imcrop(A,Sdata(i).BoundingBox);
Name=strcat('Object Number:',num2str(i));
imwrite(Img,'i.jpg');
B=padarray(Img,[10 10]);
B=imresize(B,[128 128]);
figure,imshow(B); title(Name);
end
rows = 128;
cols = 128;
radius=64;
center = [64 64];
for radius=1:64
[xMat,yMat] = meshgrid(1:cols,1:rows);
distFromCenter = sqrt((xMat-center(1)).^2 + (yMat-center(2)).^2);
circleMat = distFromCenter<=radius;
circle_image = double(B).* circleMat;
ne(radius) = length(find(circle_image > 0))
end
It shows that the dimensions of B are 128*128*3uint8 and that of circleMat is 128*128 logical.

Respuestas (1)

Walter Roberson
Walter Roberson el 24 de Mzo. de 2018
At that point, B is something that has been cropped out of the color image A and resized.
Your code tries to count nonzero pixels within a range of radii. You need to decide whether for color images whether you want to count the pixels for which at least one pixel is nonzero, or if you want to count pixels for which all of the components are are nonzero.
I suggest that when you assign to B, you use
B=double(any(B, 3));

La pregunta está cerrada.

Community Treasure Hunt

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

Start Hunting!

Translated by