plotしたデータを自動で保存するにはどうすればよいですか?
15 views (last 30 days)
Show older comments
Maya Nakamura
on 18 Jul 2018
Commented: Maya Nakamura
on 19 Jul 2018
以下のコードでは「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 Comments
Accepted Answer
Kojiro Saito
on 19 Jul 2018
上記のコードでは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ファイルの余白を調整したい場合は下記のドキュメントを参考にしてみてください。
More Answers (0)
See Also
Categories
Find more on Annotations in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!