I need to store these values from another function into an array

1 回表示 (過去 30 日間)
maaham banu
maaham banu 2020 年 1 月 3 日
編集済み: KALYAN ACHARJYA 2020 年 1 月 3 日
So this is my function which is calculating the number of keypoints from an image. So I have this file which has 8 images. I am comparing one of the image in the file with the others so I need to extract all the matching points between the images, and store those values of keypoints in an array for further processing.
SwSift is calling the function drawMatched that calculates the number of matched keypoints and prints it.
I am then accessing a folder of 8 images where I am matching one of the images with the rest.
I want to store these values in an array for further processing.
matches.JPG
function [] = drawMatched( matched, img1, img2, loc1, loc2)
% Function: Draw matched points
% Create a new image showing the two images side by side.
img3 = appendimages(img1,img2);
% Show a figure with lines joining the accepted matches.
figure('Position', [100 100 size(img3,2) size(img3,1)]);
colormap gray;
imagesc(img3);
hold on;
cols1 = size(img1,2);
n = size(matched,2);
colors = ['c','m','y'];
colors_n = length(colors);
for i = 1: n
if (matched(i) > 0)
color = colors(randi(colors_n));
line([loc1(i,2) loc2(matched(i),2)+cols1], ...
[loc1(i,1) loc2(matched(i),1)], 'Color', color);
end
end
hold off;
num = sum(matched > 0);
fprintf('Found %d matches.\n', num);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% this is another code that calls the function in which drawMatched has been used%%%%%
function keypoint = swSift(img1,img2)
% img1 = imread('1.jpg');
% img2 = imread('test.jpg');
[des1,loc1] = getFeatures(img1);
[des2,loc2] = getFeatures(img2);
matched = match(des1,des2);
% drawFeatures(img1,loc1);
% drawFeatures(img2,loc2);
drawMatched(matched,img1,img2,loc1,loc2);
global num
keypoint = num;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Calling this function in another window which I am accessing files in a folder, applying swSift %%%
% % and i am getting number of matched key points %%%%
clear all
clc;
location = 'E:\ATR\*.JPG'; % folder in which your template images exists
img= imread('E:\ATR\gh_368053_209864_19.JPG');
ds = imageDatastore(location); % Creates a datastore for all images in your folder
% fileNames={a.name};
while hasdata(ds)
temp = read(ds); % read image from datastore
% Image_name = temp.name;
% figure, imshow(temp)
keypoints = swSift(img,temp);
end

回答 (1 件)

KALYAN ACHARJYA
KALYAN ACHARJYA 2020 年 1 月 3 日
編集済み: KALYAN ACHARJYA 2020 年 1 月 3 日
Jus considering num as output arguments in the function.
function num=drawMatched( matched, img1, img2, loc1, loc2)
% Function: Draw matched points
% Create a new image showing the two images side by side.
img3 = appendimages(img1,img2);
% Show a figure with lines joining the accepted matches.
figure('Position', [100 100 size(img3,2) size(img3,1)]);
colormap gray;
imagesc(img3);
hold on;
cols1 = size(img1,2);
n = size(matched,2);
colors = ['c','m','y'];
colors_n = length(colors);
for i = 1: n
if (matched(i) > 0)
color = colors(randi(colors_n));
line([loc1(i,2) loc2(matched(i),2)+cols1], ...
[loc1(i,1) loc2(matched(i),1)], 'Color', color);
end
end
hold off;
num=sum(matched > 0);
fprintf('Found %d matches.\n', num);
end
##
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% this is another code that calls the function in which drawMatched has been used%%%%%
function keypoint = swSift(img1,img2)
% img1 = imread('1.jpg');
% img2 = imread('test.jpg');
[des1,loc1] = getFeatures(img1);
[des2,loc2] = getFeatures(img2);
matched = match(des1,des2);
% drawFeatures(img1,loc1);
% drawFeatures(img2,loc2);
keypoint=drawMatched(matched,img1,img2,loc1,loc2);
end
##
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Calling this function in another window which I am accessing files in a folder, applying swSift %%%
% % and i am getting number of matched key points %%%%
clear all
clc;
location = 'E:\ATR\*.JPG'; % folder in which your template images exists
img= imread('E:\ATR\gh_368053_209864_19.JPG');
ds = imageDatastore(location); % Creates a datastore for all images in your folder
% fileNames={a.name};
l=1;
while hasdata(ds)
temp = read(ds); % read image from datastore
% Image_name = temp.name;
% figure, imshow(temp)
keypoints(l)= swSift(img,temp);
l=l+1;
end
keypoints

製品


リリース

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by