4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【OpenCVSharp】Bitmap画像を編集して保存すると編集した要素の色が無くなる

Posted at

Bitmapを読み込んで画像中にCv2.Lineなどで描画して保存したら色指定を無視されて白く描画されてしまいました。

色を出して保存は出来ましたが、原因までは辿り着いてません。

using OpenCvSharp.Extensions;
~~
Bitmap bmp = new Bitmap(@"C:\hoge.bmp");
var mat = BitmapConverter.ToMat(bmp);
Cv2.Line(nat, x1, y1, x2, y2, Scalar.Red);

//赤い線が描画されていることが確認できる
Cv2.ImShow("show", mat);

//赤かったはずの線が白くなる!!
var saveBmp = BitmapConverter.ToBitmap(mat);
saveBmp.Save(@"C:\out.bmp");
//ImWriteしてみるがこちらも白くなる
Cv2.ImWrite(@"C:\out.bmp", mat);

取り急ぎの対策は読み込み時にBGRに変換してやれば良い。

var mat  = BitmapConverter.ToMat(bmp).CvtColor(ColorConversionCodes.RGB2BGR);

どうも一番初めにBitmapで読んだときに、
MatのColorがRGBになっている様で、LineはBGRで描かれる?
Matの中にRGBとBGRが共存している・・・?
ような印象です。
ソースまで読んでないのでなんとも言えませんが。

所でMatの色情報を後から調べるにはどうしたらいいのでしょうか??
こういうところが分かっていないので躓くんですね・・・。

しかし、ImShowでは色が見えるのにBitmap出力したらに色が消えてしまうなるのは罠だと感じました・・・。

4
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?