イントロダクション
前回に引き続き、引き算を行います。
【前回】: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)になるな。。。当たり前か?
今回は簡単ですが終わります。次は掛け算です。
次はアルファブレンド(掛け算?)です。
関連ページ一覧
- Java Install Eclipse〜開発ツールのインストール〜
- TensorFlow C++環境〜EclipseにCDTをインストール〜
- Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
- Eclipse Meven 開発手順〜プロジェクトの作成〜
- Java OpenCV 環境セットアップ(on Mac)
今までにやったこと(OpenCV編)
- Java OpenCV 環境セットアップ(on Mac)
- Java OpenCv Lv1 〜入門: 写真の表示〜
- Java OpenCV Lv2 〜画像を表示する〜
- Java OpenCV Lv3 〜画像の平滑化(smooth())〜
- Java OpenCV Lv3 〜画像にガウシアンフィルタ(GaussianBlur())〜
- Java OpenCV Lv4 〜画像の中身をみてみる〜
- Java OpenCV Lv5 〜Matクラスで描画処理〜
- Java OpenCV Lv6 〜Matクラスで背景から作成してみる〜
- Java OpenCV Lv7 〜MatクラスでEllipseしてみる〜
- Java OpenCV Lv9 〜画像編集「足し算」(cvAdd)〜
- Java OpenCV Lv9 〜画像編集「引き算」(cvSubtract)〜
- Java OpenCV Lv9 〜画像の掛け算〜
- Java OpenCV Lv10 〜行列演算Mat#submat()〜
- Java OpenCv Lv10〜画像の平均値をだす〜
重宝するページ:JavaDoc(opencv-343.jar API)