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

New to MATLAB?

How to solve the error?

Asked by Shaila parvin

Shaila parvin (view profile)

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

Shaila parvin (view profile)

Products

No products are associated with this question.

2 Answers

Answer by Azzi Abdelmalek

Azzi Abdelmalek (view profile)

on 26 May 2013
Edited by Azzi Abdelmalek

Azzi Abdelmalek (view profile)

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

Shaila parvin (view profile)

on 26 May 2013

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

Shaila parvin

Shaila parvin (view profile)

on 26 May 2013

BW = ~ BW;

What does it mean?

Jan Simon

Jan Simon (view profile)

on 26 May 2013

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

Azzi Abdelmalek

Azzi Abdelmalek (view profile)

Answer by Image Analyst

Image Analyst (view profile)

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

Shaila parvin (view profile)

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

Image Analyst (view profile)

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

Image Analyst (view profile)

Contact us