Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

How to solve the error?

Asked by Shaila parvin on 26 May 2013

when I run the code:

function [shape] = Classify(ImageFile)
if ndims(imread(ImageFile))>2
RGB = imread(ImageFile);
GRAY = rgb2gray(RGB);
else
  GRAY=imread(ImageFile);
  RGB=GRAY;
end
threshold = graythresh(GRAY);
BW = im2bw(GRAY, threshold);
%Invert the Binary Image
BW = ~ BW;
[~,L] = bwboundaries(BW, 'noholes');
STATS = regionprops(L,'all'); 
for i=1:length(STATS)
if norm([STATS(i).Extrema(2,1), STATS(i).Extrema(2,2)]-[STATS(i).Extrema(1,1), STATS(i).Extrema(1,2)])<5 %TR,TL
  %can be triangle hexagon pentagon
  if norm([STATS(i).Extrema(4,1), STATS(i).Extrema(4,2)]-[STATS(i).Extrema(3,1), STATS(i).Extrema(3,2)])<5 %RT,RB
  %can be pentagon triangle
      if  norm([STATS(i).Extrema(4,1), STATS(i).Extrema(4,2)]-[STATS(i).Extrema(5,1), STATS(i).Extrema(5,2)])<5 %RT,RB,BR = Triangle
          shape(i,1)=1; % Triangle
      else
          shape(i,1)=3; % Pentagon
      end
  else
       shape(i,1) = 4; % hexagon
  end
elseif (STATS(i).MajorAxisLength/STATS(i).MinorAxisLength<1.1 && STATS(i).Eccentricity <0.5 || (STATS(i).Solidity/STATS(i).Extent)==1)&(STATS(i).Area<0.1*numel(GRAY))
  shape(i,1)=2; % Rectangle
else
  shape(i,1)=0;
end
end
if ~isempty(find(shape==2))
  disp('Rectangle found');
else
  disp('No rectangle in the image')
end
return

I've the error "??? Input argument "ImageFile" is undefined.

Error in ==> Classify at 3 if ndims(imread(ImageFile))>2"

How to solve it?

0 Comments

Shaila parvin

Products

No products are associated with this question.

2 Answers

Answer by Azzi Abdelmalek on 26 May 2013
Edited by Azzi Abdelmalek on 26 May 2013
Accepted answer

How did you run this code?

This file is a function, it should be called: in the windows Matlab command, type

shape = Classify(ImageFile)

Look at Function

3 Comments

Shaila parvin on 26 May 2013

this shape function will be called from Classify.m file. Right?

Shaila parvin on 26 May 2013

BW = ~ BW;

What does it mean?

Jan Simon on 26 May 2013

@Sahila parvin: This toggles the value of the black&white pixels.

Azzi Abdelmalek
Answer by Image Analyst on 26 May 2013

Put this at the beginning of your function:

if nargin < 1
  [baseFileName, folder] = uigetfile();
  ImageFile = fullfile(folder, baseFileName);
end

2 Comments

Shaila parvin on 26 May 2013

my basefile is circle.jpg and folder is E:\4-1\image-thesis\implementation\shaila

what I've to write?

if nargin < 1

[circle.jpg, E:\4-1\image-thesis\implementation\shaila] = uigetfile();
ImageFile = fullfile(E:\4-1\image-thesis\implementation\shaila, circle.jpg);

end

Please help me to write it in correct format.

Image Analyst on 26 May 2013

Why didn't you do what I said? It would have worked. You changed it so that it won't/can't work! uigetfile() returns what you chose into two variables, so you can't hard code some variables into there - they will be filled with whatever filename the user selects.

Image Analyst

Contact us