Index exceeds matrix dimensions. Error in Bpos (line 37) w= (cfv(i,j)/pv(i,j)); Code is here: mov = VideoReader('C:/Users/research01/Desktop/Walking.avi'); p=imread('C:/Users/research01/Desktop/1234.png'); p=rgb2hsv(p); ph=p(:,:,1); ps=p(:,:,2); pv=p(:,:,3); alphaV=0.2; betaV=0.8; opFolder = fullfile('F:\imagelab', 'Bpos'); if ~exist(opFolder, 'dir') mkdir(opFolder); end numFrames = mov.NumberOfFrames; numFramesWritten = 0; for t = 1 : numFrames currFrame = read(mov, t); currFrame=rgb2hsv(currFrame); figure;imshow(currFrame); cfh=currFrame(:,:,1); figure; imshow(cfh); cfs=currFrame(:,:,2); figure;imshow(cfs); cfv=currFrame(:,:,3); figure;imshow(cfv); [m,n]=size(currFrame); single=zeros(m,n); for i=1:m for j=1:n % a=cfv(i,j); % progIndication = sprintf('Wrote frame %d.',a); % disp(progIndication); w= (cfv(i,j)/pv(i,j)); progIndication = sprintf('Wrote frame %d.',w); disp(progIndication); sat=cfs(i,j)-ps(i,j); progIndication = sprintf('sat frame %d.',w); disp(progIndication); hue=cfh(i,j)-ph(i,j); progIndication = sprintf('hue frame %d.',w); disp(progIndication); if(w>=alphaV && w<=betaV && sat<=-0.3 && hue <=0.2) single(i,j)=1; else single(i,j)=0; end end end imshow(single); opBaseFileName = sprintf('%3.3d.png', t); opFullFileName = fullfile(opFolder, opBaseFileName); imwrite(single, opFullFileName, 'png'); end
John Michell answered .
2025-11-20
Evidently your still image does not have the same number of rows and columns as your video. You should really check for that before you begin processing. You want to write robust code don't you? Alert your users if that's the case with errordlg().
message = sprintf('Image rows = %d\nImage columns = %d\nVideo rows = %d\nVideo columns = %d',...
rows, columns, videoRows, videoColumns);
uiwait(errordlg(message));
return;