frames extraction from a video

hey
I have written a code to extract frames of two different cropped ares from a video and to evaluate intensity of cropped areas separately as below but I am getting error saying CL=S.BL(reference field is non existance) please help me fix this
% The code is process the candle images
clear;
close all;
clc;
%% Loading video of candle flickering
A = VideoReader('Augtencm.mp4');
nf = A.NumFrames;
if nf<200
B = read(A);
else
part = floor(nf/200);
for ii = 1:part
ii
B = read(A,[(ii-1)*200+1 (ii-1)*200+200]);
%eval(['B_' num2str(ii) '= read(A,[(ii-1)*200+1 (ii-1)*200+200]);']);
BL = B(280:620,235:445,:,:);
BR = B(50:620,720:850,:,:); % Comment and save the total frame for 1 or 2 parts first
filename = ['Augtencm' num2str(ii) '.mat'];
save(filename, 'B', '-v7.3');
end
end
%C = B(:,:,:,:); %Height, Width, Color Plane, Frame Number, where Color Plane is in the order Red, Green, Blue
%save('C0034.mat', 'C', '-v7.3'); % Saving as 4D matrix for future use.
%% loading the matfile
S = load('Augtencm1.mat');
CL = S.BL;
CR = S.BR;
%% Showing frames
for t = 1:200
t
imshow(B(280:620,235:445,:,t));
imshow(B(50:620,720:850,:,t)); % modify by trial and error to retain the exact flame zone
pause(0.1)
end
%% Cropping the matrix and calculating
part=4;
for ii = 1:part
ii
filename = ['Augtencm1' num2str(ii) '.mat'];
S = load(filename);
CL = S.BL;
CR = S.BR;
%C2 = C(70:650,900:1220,:,:);
[h,w,c,t] = size(CR);
for i = 1:t
cr = CR(:,:,:,i);
cl = CL(:,:,:,i);
cr = cr(:,:,:);
cl = cl(:,:,:);
ccr = rgb2gray(cr);
ccl = rgb2gray(cl);
sr((ii-1)*200+i) = sum(sum(ccr))/(h*w);
sl((ii-1)*200+i) = sum(sum(ccl))/(h*w); % area average intensity
end
end
%% plotting intensity time series
fps = 240; % this should be actual fps of recording
t = part*200;
T = 1/fps:1/fps:t/fps;
figure(1)
plot(T,sr);
plot(T,sl);
set(gca,'linewidth',1,'fontsize',12); %xlim([0 10000]); %ylim([-2 2]);
xlabel('Time (s)')
ylabel('Intensity (a.u.)')
%savefig('Augtencm.fig')
%%

Answers (1)

Leave the semicolon off and put S on a line:
S = load(filename)
S
fieldnames(S)
What do you see in the command window? Chances are you will not see a field called BL. Attach your mat file if you need more help.

3 Comments

THONTI BEERAIAH
THONTI BEERAIAH on 25 Aug 2020
Edited: THONTI BEERAIAH on 25 Aug 2020
In command window it is showing "Reference to non-existent field 'BL' ". after excuting for some time that is upto ii=4(total no of frames in video is 880). yeah how to create field called BL.I am sorry I can't attach .mat file as it is more than 250 mb in size.
Well there you go. There is no such field. Why do you think there should be? By the way, when I said "what do you see" I meant for you to share it with me by copying and pasting back here.
If you want to create a new field called BL, you can attach one so S simply by assigning it:
S.BL = 42; % or whatever you want it to be.
I am sorry I am new here and thank you sir for your answer

Sign in to comment.

Asked:

on 24 Aug 2020

Commented:

on 25 Aug 2020

Community Treasure Hunt

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

Start Hunting!