OpenCV を使って 画像をグレースケール化します。
実装手順
NuGet から「OpenCvSharp4」パッケージを入れる
- OpenCvSharp4
- OpenCvSharp4.runtime.win
- OpenCvSharp4.Windows
- OpenCvSharp4.WpfExtensions
XAML
「MainWindow.xaml」に Image コントロールを置いて名前を「image」にします。
1 | <Image Name="image"/> |
グレースケール化する処理
ボタンのイベントで下記処理が実行されるようにします。
1 | // Image コントロールから画像データを BitmapSource 形式で取得する。 |
Cv2.CvtColor の 第3引数で 変換形式を指定できます。
今回はグレースケール化したかったので「RGB2GRAY」にしました。
「RGB を GRAY にする」みたいな意味合いでしょうね。きっと。
ちなみに「RGB2GRAY」の「2」って英語の「To」を意味しているんだと思います。発音が似ていますもんね。
もちろんモノクロで保存できます。
失敗したこと
Cv2.CvtColor の 第3引数 で何を選んでいいのか分からなかったです。
例えば適当に「ColorConversionCodes.GRAY2RGBA」を選んだらこんなエラーになりました。
OpenCvSharp.OpenCVException: ‘> Invalid number of channels in input image
そんなチャンネルねーよ。
よく理解していなかった私が悪いので、ちゃんと読んで理解したら自ずと指定するものが分かりました。
教訓
適当にし過ぎないこと。