Create a video from a 4D array
    6 ビュー (過去 30 日間)
  
       古いコメントを表示
    
Hello, I have a problem in this code.
function [] = writeBufferToFinalVideo(buffer)
video = VideoWriter('example','MPEG-4'); 
video.FrameRate = 25; 
open(video)
for i = 1:size(buffer,4)    
    img = buffer(i); 
    img(img>1) = 1;                           
    img(img<0) = 0; 
    writeVideo(video,img); 
end
close(video);
end
My buffer is a 4-dimensional array that has frames inside. It is composed of: (height, width, numChannels, framesPerSymbol). The latter is the number of frames that are in a symbol, that is, the size of my buffer.
In my opinion, I think the code is correct, but I always get an empty video without the frames in my buffer.
2 件のコメント
採用された回答
  Ameer Hamza
      
      
 2020 年 4 月 17 日
        If buffer is a 4D-array, then you will need to index it like this
img = buffer(:,:,:,i);
9 件のコメント
  Ameer Hamza
      
      
 2020 年 4 月 18 日
				I am glad to be of help.
Reason: if the datatype of the matrix is double, MATLAB considers the RGB color values between 0 and 1. Whereas, for your matrix, the values were given in an 8-bit format from 0 to 255. MATLAB takes all value over one as white (that is why you saw white video frames) Dividing by 255, normalizes the value between 0 and 1. I guess, the following will also work for your original code
writeBufferToFinalVideo(uint8(encodedBuffer));
その他の回答 (1 件)
  Image Analyst
      
      
 2020 年 4 月 18 日
        Make sure buffer is uint8.
buffer = zeros(height, width, numChannels, framesPerSymbol, 'uint8')
0 件のコメント
参考
カテゴリ
				Help Center および File Exchange で Computer Vision with Simulink についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



