How to add image 'x' to even frames and one image 'y' to odd frames

조회 수: 2 (최근 30일)
Alber
Alber 2020년 2월 27일
댓글: Alber 2020년 3월 9일
Hello,
I have a video that we will call 'x' and some images that we will call 'output_cross_alfa' and 'output_cross_Nalfa'.
My goal is to make the sum of 'x' with 'output_cross_alfa' in the even frames, and in the odd frames the sum of 'x' is done with 'output_cross_Nalfa'. The final video should be:
frame1 = frame1 + output_cross_Nalfa;
frame2 = frame2 + output_cross_alfa;
frame3 = frame3 + output_cross_Nalfa;
frame4 = frame4 + output_cross_alfa;
......
To do this I used this code:
for ii = 1: 2: length (imageNames)
for kk = 2: 2: length (imageNames)
img1 = im2single (imread (fullfile (workingDir, 'images', imageNames {ii})));
image_2 = im2single (img1 + output_cross_alfa);
img2 = im2single (imread (fullfile (workingDir, 'images', imageNames {kk})));
image_1 = im2single (img2 + output_cross_Nalfa);
output = uint8 (image_par + image_par);
writeVideo (outputVideo, output);
end
end
But I only get screenshots in black and gray when representing it.
To represent it I use this:
shuttleAvi = VideoReader (fullfile (workingDir, 'shuttle_out.avi'));
ii = 1;
while hasFrame (shuttleAvi)
mov (ii) = (im2frame (readFrame (shuttleAvi)));
ii = ii + 1;
end
figure, imshow (mov (1) .cdata, 'Border', 'tight');
movie (mov, 1, shuttleAvi.FrameRate);
And I have no idea what the failure may be.

채택된 답변

Prabhan Purwar
Prabhan Purwar 2020년 3월 5일
Hi,
According to your description there doesn't seem any need for nested loops. Try making use of the following code:
outputVideo= VideoWriter('newfile.avi');
open(outputVideo);
for ii = 1: 2: length (imageNames)
kk=ii+1;
img1 = im2single (imread (fullfile (workingDir, 'images', imageNames {ii})));
image_2 = im2single (img1 + output_cross_alfa);
img2 = im2single (imread (fullfile (workingDir, 'images', imageNames {kk})));
image_1 = im2single (img2 + output_cross_Nalfa);
output = image_1;
writeVideo (outputVideo, output);
output = image_2;
writeVideo (outputVideo, output);
end
close(outputVideo);
Hope it helps.
  댓글 수: 1
Alber
Alber 2020년 3월 9일
Thank you so much. Finally I solved my problem using one conditional like : if (rem(i,2)== 0)

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Computer Vision with Simulink에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by