plotしたデータを自動で保存するにはどうすればよいですか?
14 ビュー (過去 30 日間)
古いコメントを表示
以下のコードでは「MATLAB グラフィックスのハンドルは Figureでなければなりません」となります。
%%画像の読み込み
waveDir = fullfile('nasi');
waveScene = imageDatastore(waveDir);
for g = 150:153
RGB1 = readimage(waveScene,g);
RGB2 = readimage(waveScene,g+1);
I = rgb2gray(RGB1);
T = rgb2gray(RGB2);
%creating optical flow
opticFlow = opticalFlowHS;
flow = estimateFlow(opticFlow,I);
flow = estimateFlow(opticFlow,T);
imshow(T, []);
hold on
B =plot(flow, 'DecimationFactor',[10 10],'ScaleFactor',100);
print(B,'color_%d.jpg', g)
hold off
end
0 件のコメント
採用された回答
Kojiro Saito
2018 年 7 月 19 日
上記のコードではBがAxesになっていますが、printの引数はFigureを入れる必要があります。gcfを使えば現在のFigureを取得できますので、それをprintの引数に入れてみてはいかがでしょうか。また、printの中にgの値を含めてファイル名を入れるにはsprintfを使って'color_%d.jpg', gではなくsprintf('color_%d.jpg', g)にしてみてください。
%%画像の読み込み
waveDir = fullfile('nasi');
waveScene = imageDatastore(waveDir);
for g = 150:153
RGB1 = readimage(waveScene,g);
RGB2 = readimage(waveScene,g+1);
I = rgb2gray(RGB1);
T = rgb2gray(RGB2);
%creating optical flow
opticFlow = opticalFlowHS;
flow = estimateFlow(opticFlow,I);
flow = estimateFlow(opticFlow,T);
imshow(T, []);
hold on
plot(flow, 'DecimationFactor',[10 10],'ScaleFactor',100);
print(gcf, sprintf('color_%d.jpg', g), '-djpeg')
%saveas(gcf, sprintf('color_%d.jpg', g)) でも可
hold off
end
保存されたjpegファイルの余白を調整したい場合は下記のドキュメントを参考にしてみてください。
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Annotations についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!