ある2値画像に白い線​を引いて保存したいの​ですができません.

ある2値画像に白い線を引いて保存したいのですができません. 違う色だと保存できるのですが,白だと保存できません.なにが原因でしょうか?
imshow(BW_IMG,'Border','tight');
hold on
plot(X,Y,'w');
print('A.bmp','-dpng','-r0');

3 件のコメント

Image Analyst
Image Analyst 2017 年 4 月 15 日
I don't understand the question.
To format your code: read this link
mizuki
mizuki 2017 年 4 月 16 日
編集済み: mizuki 2017 年 4 月 16 日
以下のコードでは、グレースケールの画像に白のラインを描いて保存ができています。
I = imread('peppers.png');
BW_IMG = rgb2gray(I);
X = 50:100;
Y = 50:100;
imshow(BW_IMG,'Border','tight');
hold on
plot(X,Y,'w');
print('A.bmp','-dpng','-r0');
問題の切り分けをするために、以下の点について教えていただけますでしょうか。
  1. 画像を保存する前の plot 関数実行後の出力画像上では白のラインは見えていますでしょうか。
  2. 画像の白い部分に白の線をのせているということはありませんでしょうか。
  3. 黒のラインではいかがでしょうか。
Yumi Iwakami
Yumi Iwakami 2017 年 7 月 10 日
コメントありがとうございます.
1は見えています. 2ですが,白の領域のない部分にプロットしても出てこないので,重なっているとは考えにくいです. 3.黒は背景が黒であるため試していませんが,シアンやマゼンタなどの別の色は可能でした.
このときは急ぎだったので,シアンで線を引いて,もう一度2値化する処理をいれて回避しました.

サインインしてコメントする。

 採用された回答

Jiro Doke
Jiro Doke 2017 年 7 月 7 日

1 投票

Figure の InvertHardCopy プロパティを変更すればうまく行くかと思います。上の Mizuki さんのサンプルを借りますと
I = imread('peppers.png');
BW_IMG = imbinarize(rgb2gray(I));
X = 50:100;
Y = 50:100;
imshow(BW_IMG,'Border','tight');
hold on
plot(X,Y,'w');
set(gcf,'InvertHardCopy','off') % <-- 色をディスプレイ上と同じ色にする
print('A.bmp','-dpng','-r0');

1 件のコメント

Yumi Iwakami
Yumi Iwakami 2017 年 7 月 10 日
このときは急ぎだったので,別の色で線を引き,また2値化するという処理を挟みました. 同じ現象のときにやってみます. ありがとうございます.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Image Processing Toolbox についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!