Java OpenCV Lv9 〜画像編集「引き算」(cvSubtract)〜

イントロダクション

前回に引き続き、引き算を行います。

【前回】:Java OpenCV Lv9 〜画像編集「引き算」(cvSubtract)〜

ポイントA

前回の実行結果より「画像」と言っても所詮は数値型の配列だった

→「0=黒」「255=白」なので「0」の領域に「255」を足したら白くなる

 +  = 

<上の絵が見えない時用のIMG>

見た目的に下の部分が黒く残っても良さそうですが。。。

黒(0)に白(255)足したら残るのは極わずかになるか…

気を取り直し引き算する

ポイントB

前回の結果から「足し算」したら0「黒」が255「白」になった。

というわけで、白(255)から中間の色(値)を引き算してみようと思います。

真っ白の画像から下の落書きを引き算します。

今までは「黒(0)」か「白(255)」だったので他の色を使用して見ました。

<実行結果>


<ソース>

public static void main(String[] args) {
	long start = System.currentTimeMillis();
	// 真っ白な画像から引き算してみる
	Mat src = Imgcodecs.imread(OpenCVTest9_Substract.class.getResource("/images/white50x50.png").getPath());
	Mat cart = Imgcodecs.imread(OpenCVTest9_Substract.class.getResource("/images/racgaki2.png").getPath());
	System.out.println("*** First ****");
	System.out.println(src.dump());
	Mat dst = new Mat();
	Core.subtract(src, cart, dst);
	System.out.println("*** Second ****");
	System.out.println(dst.dump());
	ViewFrame frame = new ViewFrame(dst);
	System.out.println("実行時間: " + (System.currentTimeMillis() - start) + "ミリ秒");
}

うーむ、白い部分が引き算されたら黒(0)になるな。。。当たり前か?

今回は簡単ですが終わります。次は掛け算です。

次はアルファブレンド(掛け算?)です。

関連ページ一覧

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

重宝するページ:JavaDoc(opencv-343.jar API)