frames extraction from a video

3 views (last 30 days)
THONTI BEERAIAH
THONTI BEERAIAH on 24 Aug 2020
Commented: THONTI BEERAIAH on 25 Aug 2020
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)

Image Analyst
Image Analyst on 24 Aug 2020
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
Image Analyst
Image Analyst on 25 Aug 2020
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.
THONTI BEERAIAH
THONTI BEERAIAH on 25 Aug 2020
I am sorry I am new here and thank you sir for your answer

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!