.mat ouput giving error

i am trying to look at the ouput of .mat file so i loaded the ,mat in current folder
a = load('GT_IMG_1.mat');
imshow(a)
but i am getting the following error, can some one help me with this
Error using imageDisplayValidateParams
Expected input number 1, I, to be one of these types:
double, single, uint8, uint16, uint32, uint64, int8, int16, int32, int64, logical
Instead its type was struct
Error in images.internal.imageDisplayParseInputs (line 78)
common_args = images.internal.imageDisplayValidateParams(common_args);
Error in imshow (line 222)
images.internal.imageDisplayParseInputs({'Parent','Border','Reduce'},preparsed_varargin{:});

 Risposta accettata

Ameer Hamza
Ameer Hamza il 17 Apr 2020
Modificato: Ameer Hamza il 17 Apr 2020
load() function returns a struct: https://www.mathworks.com/help/matlab/ref/load.html. The struct has field names, the same as the variable names inside the .mat file. You can see the name of fields
a = load('GT_IMG_1.mat');
fieldnames(a)
and then use imshow on the field containing the image data
imshow(a.ImageVariableName) % ImageVariableName is the name of the field inside a

13 Commenti

sri harsha
sri harsha il 17 Apr 2020
Modificato: sri harsha il 17 Apr 2020
i got the variable is having an cell , so could you tell me how to access it
and i got the following error
a = load('GT_IMG_1.mat');
fieldnames(a)
ans =
'image-info'
>> imshow(a.image_info);
Error using imageDisplayValidateParams
Expected input number 1, I, to be one of these types:
double, single, uint8, uint16, uint32, uint64, int8, int16, int32, int64, logical
Instead its type was cell.
Error in images.internal.imageDisplayValidateParams (line 11)
validateattributes(common_args.CData, {'numeric','logical'},...
Error in images.internal.imageDisplayParseInputs (line 78)
common_args = images.internal.imageDisplayValidateParams(common_args);
Error in imshow (line 222)
images.internal.imageDisplayParseInputs({'Parent','Border','Reduce'},preparsed_varargin{:});
Ameer Hamza
Ameer Hamza il 17 Apr 2020
Can you attach the .mat file "GT_IMG_1.mat"?
sri harsha
sri harsha il 17 Apr 2020
this is my GT_IMG_1.mat file representing ground truth of an image
sri harsha
sri harsha il 17 Apr 2020
could you plese look and tell
sri harsha
sri harsha il 17 Apr 2020
Ameer Hamza bro please look into it
Ameer Hamza
Ameer Hamza il 17 Apr 2020
sri harsha, Your .mat file does not contain any image. It just contain a cell array which also does not contain any image.
sri harsha
sri harsha il 18 Apr 2020
could you please just tell me how to do you come to know ,you plottted the .mat to image?
or by what other method you verified that it doesnt contain image
please tell me;
thank you
Ameer Hamza
Ameer Hamza il 18 Apr 2020
An image file is a matrix of size m*n, where m and n are the height and width of the image in pixels. Even a typical low-resolution image usually has m>200, and n>200. The cell array in your .mat file has a matrix of size mx2. If you make it as an image, it will just be two pixels wide. It will not be observable.
sri harsha
sri harsha il 18 Apr 2020
Modificato: sri harsha il 18 Apr 2020
ya i waht you said is true,imagine if those pixels value(represent) the heads of people,, all in the image ,can i consider (mx2) it to be the pixel values of head,beacuse i am working on crowd counting based on head detection ad it is its dataset
Ameer Hamza
Ameer Hamza il 18 Apr 2020
Yes, that is also possible, but you still cannot call imshow() function on that information. imshow() need information about all the pixels in the image.
sri harsha
sri harsha il 18 Apr 2020
ok tq,but can i know the distance in a image , i mean which pixel it is representing by (mx2) pixel coardinates, imean is there a way to verify the pixel values in (mx2) isrepresenting which area in an image
sri harsha
sri harsha il 18 Apr 2020
Ammer Hamza could you please tell me can i get the co-ordinates of my(mx2) pixel values
You can get the location of the heads in pixel coordinates using this
a = load('GT_IMG_1.mat');
locations = a.image_info{1}.location;
You can first load the image you attached in the comment above and the use the plot the locations in mat file like this
im = imread('imge_filename'); % your image file.
imshow(im);
hold on
a = load('GT_IMG_1.mat');
locations = a.image_info{1}.location;
plot(locations(:,1), locations(:,2), '+')

Accedi per commentare.

Più risposte (0)

Categorie

Prodotti

Release

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by