【Java】 OpenCV ~ 基本編 / 画像編集 ~

■ はじめに

 * OpenCV の設定をおこなっておく(下記の関連記事を参照)

https://dk521123.hatenablog.com/entry/2016/06/27/234046

■ サンプルで使用する画像

http://www.cs.cmu.edu/~chuck/lennapg/playboy_backups/lena_lg.jpg

■ 画像を90度/180度/270度回転させる

以下のAPIを使用する 
 * Core.transpose() : 転置行列(※)

 ※ 行列Aの行と列を入れ替えてできる行列を、行列Aの転置行列という

http://www.geisya.or.jp/~mwm48961/linear_algebra/transpose1.htm

 * Core.flip() : 画像を垂直・水平に反転する

サンプル

OpenCV v2.4系

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;

public class MatrixSample {

  /**
   * @param args
   */
  public static void main(String[] args) {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    String input = "C:/temp/lena_lg.jpg";
    String output90 = "C:/temp/result90.jpg";
    String output180 = "C:/temp/result180.jpg";
    String output270 = "C:/temp/result270.jpg";
    Mat image90 = Highgui.imread(input);
    Mat image180 = Highgui.imread(input);
    Mat image270 = Highgui.imread(input);

    // 処理
    Core.transpose(image90, image90);
    Core.flip(image90, image90, 1);
    
    Core.flip(image180, image180, -1);
    
    Core.transpose(image270, image270);
    Core.flip(image270, image270, 0);
    
    System.out.println(String.format("Writing %s", image90));
    Highgui.imwrite(output90, image90);
    System.out.println(String.format("Writing %s", image180));
    Highgui.imwrite(output180, image180);
    System.out.println(String.format("Writing %s", image270));
    Highgui.imwrite(output270, image270);

    System.out.println("Done!");
  }
}

参考文献

http://www.kosaic.jp/wordpress/2011/08/android-opencv-%E3%83%8D%E3%82%BF%E6%8B%BE%E3%81%84-822/
http://blog.goo.ne.jp/nobotta50/e/fb83c1d0d3d90ee99c3657f1654bbe1c
http://geekn-nerd.blogspot.jp/2012/02/opencv-for-android_19.html

関連記事

OpenCV ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2016/06/27/234046
画像編集 ~ 画像を縦・横に結合する ~
https://dk521123.hatenablog.com/entry/2016/10/29/114440