首页 > 解决方案 > 如何在matlab中使用im2single而不是im2uint制作彩色视频

问题描述

下面的代码600x600x28使用 im2unit8 从矩阵制作视频,但在一些像下图这样的帧中,颜色分布与原始的不同。这是由于使用im2uint8.

我试图用它im2single来解决这个问题,但由于它映射了 0 和 1 之间的矩阵,所以视频帧都是黑色的。我想知道有什么方法可以制作具有 im2single功能的彩色视频。

Orig = randi([1 1000],600,600,28);
x = im2uint8(mat2gray(Orig));
% x = im2single(mat2gray(Orig));

map = jet(256); % Use colormap with 256 colors (the default is 64).

x_all = zeros(size(x, 1), size(x, 2), 3, size(x, 3), 'uint8'); % Allocate space

for i=1:size(x,3)
    x_all(:,:,:,i) = im2uint8(ind2rgb(x(:,:,i), map));
end

v = VideoWriter('1_3.avi');
v.FrameRate = 1;
open(v);
writeVideo(v,x_all);
close(v)

原始图像

由 uint8 转换的图像

标签: imagematlabimage-processingvideorgb

解决方案


推荐阅读