【问题标题】:Writing a greyscale video using Videowriter/avifile使用 Videowriter/avifile 编写灰度视频
【发布时间】:2014-09-12 10:31:51
【问题描述】:

我正在编写一个函数,该函数生成一个模仿流体中粒子的电影。电影是彩色的,我想一开始就生成一个灰度电影。现在我正在使用 avifile 而不是 videowriter。有关更改此代码以获取灰度电影的任何帮助吗?提前致谢。

close all;
clear variables;
colormap('gray');

vidObj=avifile('movie.avi'); 
for i=1:N    
[nx,ny]=coordinates(Lx,Ly,Nx,Ny,[x(i),-y(i)]);
[xf,yf]=ndgrid(nx,ny);
zf=zeros(size(xf))+z(i);    

% generate a frame here
[E,H]=nfmie(an,bn,xf,yf,zf,rad,ns,nm,lambda,tf_flag,cc_flag);
Ecc=sqrt(real(E(:,:,1)).^2+real(E(:,:,2)).^2+real(E(:,:,3)).^2+imag(E(:,:,1)).^2+imag(E(:,:,2)).^2+imag(E(:,:,3)).^2);
clf
imagesc(nx/rad,ny/rad,Ecc); 
writetif(Ecc,i);
    if i==1
    cl=caxis;
    else
    caxis(cl)
    end
axis image;
axis off;
frame=getframe(gca);
cdata_size = size(frame.cdata);  
data = uint8(zeros(ceil(cdata_size(1)/4)*4,ceil(cdata_size(2)/4)*4,3));
data(1:cdata_size(1),1:cdata_size(2),1:cdata_size(3)) = [frame.cdata];
frame.cdata = data; 
vidObj = addframe(vidObj,frame);
end
vidObj = close(vidObj);

【问题讨论】:

    标签: image matlab image-processing video-processing movie


    【解决方案1】:

    对于您的帧数据,使用rgb2gray 将彩色帧转换为其灰度对应。因此,更改此行:

    data(1:cdata_size(1),1:cdata_size(2),1:cdata_size(3)) = [frame.cdata]; 
    

    到这两行:

    frameGray = rgb2gray(frame.cdata);
    data(1:cdata_size(1),1:cdata_size(2),1:cdata_size(3)) = ...
         cat(3,frameGray,frameGray,frameGray);
    

    新代码的第一行会将您的彩色帧转换为单通道灰度图像。在彩色方面,灰度图像的所有通道都具有相同的值,这就是第二行调用cat(3,frameGray,frameGray,frameGray); 的原因。这会将灰度图像的三个副本堆叠为一个 3D 矩阵,然后您可以将此帧写入您的文件。

    您需要进行此堆叠,因为在使用 VideoWriter 将帧写入文件时,该帧必须是颜色(也称为 3D 矩阵)。因此,如果要将灰度帧写入文件,唯一的解决方法是将灰度图像复制到每个红色、绿色和蓝色通道中,以创建其等效颜色。

    顺便说一句,cdata_size(3)始终为 3,因为 getframecdata 结构始终返回 3D 矩阵。

    祝你好运!

    【讨论】:

    • @NitsornWongsajjat​​hiti - 你好。为什么不接受我的回答?这不起作用吗?
    • 对不起!这是一个错误。
    • @NitsornWongsajjat​​hiti - 没问题!只是好奇。谢谢指正:)
    猜你喜欢
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 2016-05-24
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多