前回C#環境でOpenCvSharpを導入することで
OpenCVを使った開発環境を簡単に構築することができた…と。
(思い返し)
んで、だんだんOpenCVを使い始めていきましょうということでですね。
先ずは画像の読み込みや表示、色変換等をやりたいなということで、
こんなのをやってみようかと思います。
そんなに難しい内容ではないんですが、
C++とちょっとだけ記述が違ってつまるところあったりするからね。
自分用に。
一番はじめに
OpenCvSharpを使用する箇所にはusingで下記の記載を入れておいた方がよさそう。
using OpenCvSharp;
画像の読み込み方法
画像の読み込みは「Cv2.ImRead」メソッドで読み込みます。
ファイル名を指定して、Matデータ型で返す。
大体C++と同じですかね。
ファイル名を指定して、Matデータ型で返す。
大体C++と同じですかね。
こんな感じで使用できる。
Mat image = Cv2.ImRead( filepath );
Matに読み込んだ画像の情報が返ってきますね。
image.Widthとかimage.Heightみたいな感じで縦横のサイズを取得したりもできます。
第2引数でImreadModes.Colorというのがあって、
どうも減色させて読み込んだりできるのかな?
そっちはまだ試していないですね…。
読み込んだ画像の表示方法
上記のCv2.ImReadで画像ファイルを読み込んだら、
Cv2.ImShowで表示できます。
この時にウィンドウ名を指定します。
既に指定しているウィンドウ名を指定した場合は、そのウィンドウの内容が更新されます。
下記のような形で表示できる。
Mat image = Cv2.ImRead( filepath );Cv2.ImShow( "loadimage", image );
読み込んだ画像ファイルの確認であったりとか、
画像処理した後の内容の確認だったりとかで、
結構ひんぱんに使うんではないでしょうかね?
色変換の方法
読み込んだ画像の色変換を行う際の方法を最後に。これは「CvtColor」を使用します。
Mat情報から呼び出す方法は下記のような感じ。
Mat image = Cv2.ImRead( filepath );Mat cnv_image = image.CvtColor( 変換コード );
「Cv2.CvtColor」メソッドで変換する方法もあります。
こちらは変換元と変換先を指定して使用するみたいですね。
こっちで呼び出す際は下記のような感じ。
Mat image = Cv2.ImRead( filepath );Mat cnv_image = new Mat();Cv2.CvtColor( image, cnv_image, 変換コード );
で、変換コード部分に定義値を指定して、
グレイスケールに変換したり、という色変換を行います。
通常、何も指定しない場合はImReadで読み込んだデータはBGR形式になっているので、
「ColorConversionCodes.BGR2...」の定義を使用します。
結構いろいろ変換の種類がありますが、その一部のみ。
/* BGR画像からグレイスケール */dst = image.CvtColor(ColorConversionCodes.BGR2GRAY);/* BGR画像からRGBに変換 */dst = image.CvtColor(ColorConversionCodes.BGR2RGB);/* BGR画像からLUV色空間に変換 */dst = image.CvtColor(ColorConversionCodes.BGR2Luv);/* BGR画像からHSV色空間に変換 */dst = image.CvtColor(ColorConversionCodes.BGR2HSV);/* BGR画像からLAB色空間に変換 */dst = image.CvtColor(ColorConversionCodes.BGR2Lab);
それぞれImShowで表示すると下記のような感じになります。
下の段の左からグレースケール、 LUV、HSV、LABです。
おわり
画像の表示は処理の過程中にデバッグ用で使用したりするので、
結構頻繁に使用しますね。
色変換はグレースケール変換はよく使用する印象ですね。
HSV変換とかは…ほかの画像処理とかで使用するんですかね?
とりあえず今回はこんな感じです。
0 件のコメント:
コメントを投稿