0

Matlab と Kinect プログラミングは初めてです。コードの 162 行目から 155 行目まで苦労しましたが、行き詰まってしまいました。助けていただければ幸いです。

色ストリームと深度ストリームの両方を記録して、後でテストするたびにライブでストリーミングすることなく画像処理できるようにしようとしています。カラー ストリームは管理できましたが、深度ストリームはより難しいようです。

「hgMovie の使用中にエラーが発生しました。ムービー cdata は uint8 配列のタイプである必要があります」

line depthMov=uint8(depthMov); を使用してみました。あるフォーラムで提案されているように、「構造体からuint8への変換は不可能です」という他の提案がありますか? 以下は、私が使用しようとしているコードのスニペットです。

    depthVid=videoinput('kinect',2,'Depth_640x480');
    set(depthVid, 'LoggingMode', 'Disk&Memory');
    depthLogfile = VideoWriter('depthlogfile.mj2'), 'Motion JPEG 200');
    depthVid.DiskLogger = depthLogfile;

    triggerconfig(depthVid, 'manual');
    set(depthVid, 'FramesPerTrigger',inf);

    start(depthVid);
    pause(20);
    trigger(depthVid);
    [depthFrameData, depthTimeData, depthMetaData] = getdata(depthVid);
    stop(depthVid)

    depthPlayback=Video('depthlogfile.mj2');

    dFrames=depthPlayback.NumberOfFrames;
    dheight=depthPlayback.Height;
    dWidth=depthPlayback.Width;

    depthMov(1:dFrames)=struct('cdata,zeros(dHeight,dWidth,3,'unit8'),'colormap',[]);

    for k = 1:dFrames
         depthMov(k).cdata=read(depthPlayback,k);
    end

    hf2 = figure;
    set (hf2,'position',[150 150 dWidth dHeight])

    %depthMov = uint(depthMov); % failed conversion

    movie(hf2,depthMov,1,depthPlayback.FrameRate); %Line I am getting the error

事前に助けやアドバイスをありがとう。

4

1 に答える 1

0

変数depthMov構造配列で、各フレームのビデオ データはフィールドcdataです。

depthMov.cdataアプリケーションでは、データが uint8であることを確認する必要があるようです。

depthMov.cdataコードでは、各フレームをfor ループに割り当てるときにこれを行うことができます。

これを試して

 for k = 1:dFrames
     depthMov(k).cdata=uint8(read(depthPlayback,k));
 end

NBあなたのコードのこの上の行は、私が推測するように、タイプミスであり、そうあるべきです

depthMov(1:dFrames)=struct('cdata',zeros(dHeight,dWidth,3,'unit8'),'colormap',[]);

さまざまなデータ型を含む matlab の基礎の詳細については、こちらを参照してください。

于 2013-11-01T13:24:05.443 に答える