Effacer les filtres
Effacer les filtres

executions is fine for the first run but it is showing an error

2 vues (au cours des 30 derniers jours)
Maruthi Maruthi
Maruthi Maruthi le 6 Avr 2017
function ImagesExample(uname1) %# read images in a cell array disp(uname1); imgs = cell(6,1); for i=1:6 imgs{i} = imread( sprintf('C:/Users/maruthi1/Documents/MATLAB/images3/ma3%1d.jpg',i) ); end
%# show them in subplots
figure('Name','Image_mag','Numbertitle','off');
title('Image_mag');
for i=1:6
subplot(2,3,i);
h = imshow(imgs{i}, 'InitialMag',200, 'Border','tight');
title(num2str(i))
set(h, 'ButtonDownFcn',{@callback,i})
end
function callback(o,e,idx)
%# show selected image in a new figure
figure(2), imshow(imgs{idx})
title(num2str(idx))
promptMessage = sprintf('Drag out a box that you want to copy,\nor Cancel to abort processing?');
titleBarCaption = 'Continue?';
button = questdlg(promptMessage, titleBarCaption, 'Continue', 'Cancel', 'Continue');
if strcmpi(button, 'Cancel')
return;
end
A=imgs{idx};
n = input('Please enter the number of scenes you wish to crop: ')
ii=1;
%load user.mat
while (ii<=n)
im_cropped{ii} = imcrop(imgs{idx});
ii=ii+1;
end
for ii=1:n
figure (4) ;
h=[];
h(ii)=subplot(3,4,ii);
imshow(im_cropped{ii},'Parent',h(ii));
percent_match(uname1,im_cropped{ii});
ii=ii+1;
end
promptMessage = sprintf('Your cropped images saved successfully');
titleBarCaption = 'Continue?';
button = questdlg(promptMessage, titleBarCaption, 'Continue', 'Cancel', 'Continue');
if strcmpi(button, 'Cancel')
return;
end
end
end
percent_match.m
function percent_match(uname1,imgs)
disp(uname1);
myDir = 'user_images/';
myDir=strcat(myDir,uname1)
myDir=strcat(myDir,'/');
jpgFiles = dir([myDir '*.jpg']);
numFiles = length(jpgFiles);
mydata = cell(1,numFiles);
% mydata = zeros(numFiles);
for k = 1:numFiles
mydata{k} = imread([myDir jpgFiles(k).name]);
mydata{k}=rgb2gray(mydata{k});
imgs=rgb2gray(imgs);
mydataPoints=detectSURFFeatures(mydata{k});
strong1 = mydataPoints.selectStrongest(50);
imgsPoints=detectSURFFeatures(imgs);
strong2 = imgsPoints.selectStrongest(50);
[mydataFeatures,mydataPoints1]=extractFeatures(mydata{k},strong1);
[imgsFeatures,imgsPoints]=extractFeatures(imgs,strong2);
mydataPairs=matchFeatures(mydataFeatures,imgsFeatures);
matchedmydataPoints = mydataPoints(mydataPairs(:, 1), :);
matchedimgsPoints = imgsPoints(mydataPairs(:, 2), :);
[tform, inlierBoxPoints, inlierScenePoints] = ...
estimateGeometricTransform(matchedmydataPoints, matchedimgsPoints, 'affine');
boxPolygon = [1, 1;... % top-left
size(mydata{k}, 2), 1;... % top-right
size(mydata{k}, 2), size(mydata{k}, 1);... % bottom-right
1, size(mydata{k}, 1);... % bottom-left
1, 1];
newBoxPolygon = transformPointsForward(tform, boxPolygon);
%figure;
%imshow(imgs);
%hold on;
%line(newBoxPolygon(:, 1), newBoxPolygon(:, 2), 'Color', 'y');
%title('Detected Box');
numPairs = length(mydataPairs); %the number of pairs
percentage = (numPairs*2);
if percentage < 75
disp('we have this');
disp(percentage);
else
disp('we dont have this')
end
end
end
Please help me for my project.
  1 commentaire
Walter Roberson
Walter Roberson le 6 Avr 2017
I recommend that you recode using fullfile() instead of building the file names the way you do now

Connectez-vous pour commenter.

Réponses (1)

Guillaume
Guillaume le 6 Avr 2017
Well, clearly from the error message, you're passing a 2D matrix to rgb2gray. If you pass a 2D matrix to rgb2gray it must be a colour map which is always a matrix with 3 columns. I suspect that instead you're giving it a greyscale image. rgb2gray only works on colour images or colour maps, not greyscale images.
It's impossible for us to tell you which image is causing problem since we don't have access to them. I would suggest you learn to use the debugger. At the comment prompt, issue
dbstop if error
run your code and when it breaks into the debugger, see which rogue image (uname or imgs) is causing the issue.
You could also wrap the call to rgb2gray in a check:
switch ndims(inputimage)
case 2 %image is already greyscale
greyimage = inputimage;
case 3 %colour image
greyimage = rgb2gray(inputimage);
otherwise
error('not an image');
end

Catégories

En savoir plus sur Deep Learning for Image Processing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by