how to read and write a gray AVI video file in 16 bit

I want save a grayscale matrix in a videofile without lost information.
And i want to read this file to compare it.
I try this :
% Create and save
Fmt = 'Grayscale AVI';
% Fmt = 'Uncompressed AVI';
vidObj = VideoWriter('video16.avi',Fmt);
open(vidObj);
for i = 1:100
gray_img = rand(480, 640) * 2^16;
writeVideo(vidObj, double(gray_img./2^16));
end
close(vidObj);
figure;imagesc(gray_img);colormap gray;impixelinfo;
disp( mean2(gray_img) );
% Read and show
vidObj = VideoReader('video16.avi');
for k = 1 : vidObj.NumFrames
frame = read(vidObj, k);
imshow(frame);
end
figure;imagesc(frame);colormap gray;impixelinfo;
disp( mean2(frame) );
but my read frames are always in 8 bit format
Any help should be appreciate
Thanks

Risposte (2)

The command VideoWriter has an attribute called "VideoBitsPerPixel" which is the number of bits per pixel in each output frame.
Thanks, for this answer but :
for the both format i have a error message
"Unable to set the 'VideoBitsPerPixel' property of class 'VideoWriter' because it is read-only."
Fmt = 'Grayscale AVI';
% Fmt = 'Uncompressed AVI';
vidObj = VideoWriter('video16.avi',Fmt);
vidObj.VideoBitsPerPixel = 16;
Unable to set the 'VideoBitsPerPixel' property of class ''VideoWriter'' because it is read-only.
thank but i can't use this solution...

Prodotti

Release

R2023b

Richiesto:

il 24 Gen 2024

Risposto:

il 24 Gen 2024

Community Treasure Hunt

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

Start Hunting!

Translated by