error: Reference to non-existent field 'opts'.
1 次查看(过去 30 天)
显示 更早的评论
hello, error occurs when I run demo_im2mcg.m:
Reference to non-existent field 'opts'.
Error in edgesDetect (line 33)
opts=model.opts; opts.nTreesEval=min(opts.nTreesEval,opts.nTrees);
Error in img2ucms>img2ucm (line 91)
[E,~,O] = edgesDetect( I, model );
Error in img2ucms>img2ucm_scale (line 75)
[ucm2, times] = img2ucm(I, model, param.mult_Pb, param.sat_sPb, param.nvec, param.dthresh, param.ic_gamma);
Error in img2ucms (line 56)
[ucms{s}, times] = img2ucm_scale(I, model, param);
Error in im2mcg (line 63)
[ucm2] = img2ucms(image, sf_model, scales);
Error in demo_im2mcg (line 10)
[candidates_scg, ucm2_scg] = im2mcg(I,'fast');
demo_im2mcg.m is following:
%% Demo to show the results of MCG
clear all;close all;home;
% Read an input image
I = imread(fullfile(root_dir, 'demos','101087.jpg'));
tic;
% Test the 'fast' version, which takes around 5 seconds in mean
[candidates_scg, ucm2_scg] = im2mcg(I,'fast');
toc;
tic;
% Test the 'accurate' version, which tackes around 30 seconds in mean
[candidates_mcg, ucm2_mcg] = im2mcg(I,'accurate');
toc;
%% Show UCM results (dilated for visualization)
figure;
subplot(1,3,1)
imshow(I), title('Image')
subplot(1,3,2)
imshow(imdilate(ucm2_scg,strel(ones(3))),[]), title('Fast UCM (SCG)')
subplot(1,3,3)
imshow(imdilate(ucm2_mcg,strel(ones(3))),[]), title('Accurate UCM (MCG)')
%% Show Object Candidates results and bounding boxes
% Candidates in rank position 11 and 12
id1 = 11; id2 = 12;
% Get the masks from superpixels and labels
mask1 = ismember(candidates_mcg.superpixels, candidates_mcg.labels{id1});
mask2 = ismember(candidates_mcg.superpixels, candidates_mcg.labels{id2});
% Bboxes is a matrix that contains the four coordinates of the bounding box
% of each candidate in the form [up,left,down,right]. See folder bboxes for
% more function to work with them
% Show results
figure;
subplot(1,3,1)
imshow(I), title('Image')
subplot(1,3,2)
imshow(mask1), title('Candidate + Box')
hold on
plot([candidates_mcg.bboxes(id1,4) candidates_mcg.bboxes(id1,4) candidates_mcg.bboxes(id1,2) candidates_mcg.bboxes(id1,2) candidates_mcg.bboxes(id1,4)],...
[candidates_mcg.bboxes(id1,3) candidates_mcg.bboxes(id1,1) candidates_mcg.bboxes(id1,1) candidates_mcg.bboxes(id1,3) candidates_mcg.bboxes(id1,3)],'r-')
subplot(1,3,3)
imshow(mask2), title('Candidate + Box')
hold on
plot([candidates_mcg.bboxes(id2,4) candidates_mcg.bboxes(id2,4) candidates_mcg.bboxes(id2,2) candidates_mcg.bboxes(id2,2) candidates_mcg.bboxes(id2,4)],...
[candidates_mcg.bboxes(id2,3) candidates_mcg.bboxes(id2,1) candidates_mcg.bboxes(id2,1) candidates_mcg.bboxes(id2,3) candidates_mcg.bboxes(id2,3)],'r-')
edgesDetect function is following:
Copyright code removed, the function edgesDetect is available here:
can anybody help to solve it? thank you !
2 个评论
Adam Danz
2019-11-21
If you edit your question and format your code by selecting the code and using the [>] button, it will be much easier to read.
Adam Danz
2019-11-21
I don't see where edgesDetect is being called or where the 2nd input 'model' is produced. Obviously 'model' should be a structure with a field "opts" and this variable is likely produced by another function but we don't see that part.
采纳的回答
Ridwan Alam
2019-11-21
编辑:Ridwan Alam
2019-11-21
Updated Solution:
inside im2mcg.m, (line 52)
sf_model = loadvar(fullfile(mcg_root, 'datasets', 'models', 'sf_modelFinal.mat'),'model');
change that to:
sf_model = load(fullfile(mcg_root, 'datasets', 'models', 'sf_modelFinal.mat'));
sf_model = sf_model.model;
%% old conversation
Can you double check your downloaded version of the model?
This one has model.opts:
11 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Inputs 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!