Java OpenCV Lv10 〜画像の論理演算〜

イントロダクション

前回は、Mat#submat()を実行してみました。元の画像データを切り抜きその部分に変更を加えるものでした。

今回は、Core#bitwise_and()を実行してみます。

Java OpenCV Lv9 〜画像の掛け算〜

画像の論理演算「AND演算処理」

本を読むと、描く配列ごとの論理積の結果を出力するようです。つまり「掛け算」ということです。前々回やったような?些細なことは放っておき。。。

シンプルに実行した結果を記載いたします。

<実行結果>

 +  = 

<上の絵が見えないとき用>



2つの画像が合体したような感じです。どっかでみたような結果だな・・・

 

上でやったのと同じ結果だな(元にした画像は違います)

使用したメソッドは下のものです。パラメータも多く細かい調整が可能です。

Core.addWeighted(src, 0.5, cart, 0.5, 0, dst);

今回使用したのは下のソースコード赤い字の部分です。

<ソース> ※Gitからダウンロードできます

/**
 * メインメソッド、書き方は決まっている。
 * イメージファイルを読み込んで線を引く
 * 
 * @param argsプログラム引数
 */
public static void main(String[] args) {
	long start = System.currentTimeMillis();
	// 画像を2枚読み込む
	Mat src = Imgcodecs.imread(OpenCVTest11.class.getResource("/images/4color.png").getPath());
	Mat cart = Imgcodecs.imread(OpenCVTest11.class.getResource("/images/racgaki2.png").getPath());
	// 論理演算処理を行う
	Mat dst = new Mat();
	Core.bitwise_and(src, cart, dst);
	ViewFrame frame = new ViewFrame(dst);
	System.out.println("実行時間: " + (System.currentTimeMillis() - start) + "ミリ秒");
}

まとめ

アルファブレンド(addWeighted)の調整値(param)を上のコードと同じように実行すると論理積と同じ結果でる。

画像処理を行うときは、それぞれ適当な方法を洗濯して使用する。。。というところでしょうか。

でわでわ。。。

関連ページ一覧

  1. ava Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseにCDTをインストール〜
  3. Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)

今までにやったこと(OpenCV編)

  1. Java OpenCv Lv1 〜入門: 写真の表示〜
  2. Java OpenCV Lv2 〜画像を表示する〜
  3. Java OpenCV Lv3 〜画像の平滑化(smooth())〜
  4. Java OpenCV Lv3 〜画像にガウシアンフィルタ(GaussianBlur())〜
  5. Java OpenCV Lv4 〜画像の中身をみてみる〜
  6. Java OpenCV Lv5 〜Matクラスで描画処理〜
  7. Java OpenCV Lv6 〜Matクラスで背景から作成してみる〜
  8. Java OpenCV Lv7 〜MatクラスでEllipseしてみる〜
  9. Java OpenCV Lv9 〜画像編集「足し算」(cvAdd)〜
  10. Java OpenCV Lv9 〜画像編集「引き算」(cvSubtract)〜
  11. Java OpenCV Lv9 〜画像の掛け算〜
  12. Java OpenCV Lv10 〜行列演算Mat#submat()〜
  13. Java OpenCv Lv10〜画像の平均値をだす〜