MATLABを使用して時間間隔で画像を撮影し,その画像をタイムラプス動画化する方法について
5 views (last 30 days)
Show older comments
現在,Image Acquisition Toolboxを用いて,顕微鏡のカメラから画像を1分間隔で計18時間撮影し,その画像を動画にしたいと考えていますが,どのようにすれば良いか分かりません.
vid = videoinput('winvideo', 1, 'RGB16_2752x2192');
start(vid);
preview(vid);
frame1 = getsnapshot(vid);
frame2 = getsnapshot(vid);
stop(vid);
delete(vid);
clear vid
このスクリプトでおそらくframe1と2の段階の画像は撮影できているとは思うのですが,Image Acquisition Toolbox内のframeやtriggerの意味がよく理解できておらず,例えば60frameで何秒を表しているのかが分からない状態です.
また,ここから動画を作成するにはどうすればいいでしょうか.
MATLABについては使い始めたばかりで右も左も分からない状態で困っています.
どなたかお力添えいただければと思います.
よろしくお願いいたします.
0 Comments
Accepted Answer
Naoya
on 26 Aug 2021
カメラから直接 aviファイルなどの動画像に保存する方法になると思いますが、該当するドキュメントとしては以下のようなものが参照いただけます。
>> web(fullfile(docroot, 'imaq/logging-image-data-to-disk.html'))
基本的に、 videoinputオブジェクトの LoggingMode プロパティを 'disk' として、
DiskLoggerプロパティに VideoWriterオブジェクトを指定します。
上記ドキュメント例の他に、以下の様な例題も作成してみましたので、併せてご参照ください。(1秒間隔で 10フレーム分 (計10秒分)を動画像に保存する)
% Webcamera から直接AVIに保存する
vid = videoinput('winvideo', 1, 'YUY2_640x480');
src = getselectedsource(vid);
% 取得するフレーム数
vid.FramesPerTrigger = 10; % ここでは小さな例として 10フレーム分
% 間引き数 (30フレームごと / 30fps の場合 1sec 毎に取得)
vid.FrameGrabInterval = 30;
% タイムアウト設定 (取得する時間以上の時間を設定)
vid.Timeout = 20;
% ロギングする対象 (disk / memory?)
vid.LoggingMode = 'disk';
diskLogger = VideoWriter('record.avi');
vid.DiskLogger = diskLogger;
vid.ReturnedColorspace = 'rgb';
% 画像取得開始
start(vid);
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!