How to solve the error?

조회 수: 2 (최근 30일)
Shaila parvin
Shaila parvin 2013년 5월 26일
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?

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2013년 5월 26일
편집: Azzi Abdelmalek 2013년 5월 26일
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
Shaila parvin
Shaila parvin 2013년 5월 26일
BW = ~ BW;
What does it mean?
Jan
Jan 2013년 5월 26일
@Sahila parvin: This toggles the value of the black&white pixels.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2013년 5월 26일
Put this at the beginning of your function:
if nargin < 1
[baseFileName, folder] = uigetfile();
ImageFile = fullfile(folder, baseFileName);
end
  댓글 수: 2
Shaila parvin
Shaila parvin 2013년 5월 26일
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 2013년 5월 26일
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Image Segmentation and Analysis에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by