Java OpenCv Hello in Java〜OpenCv事始め〜

イントロダクション

ついに最近流行りの技術「人工知能」への入り口画像解析を始めたいと思います。以前、中途半端にPythonでOpenCvを使ったのですが、すごく簡単に扱えて「あ〜したらこ〜なる」なんてことを考えさせられる。。。そんなフレームワークだと思います。

参考サイト:https://www.tutorialspoint.com/opencv/opencv_reading_images.htm

 

事始めということで

年の瀬も近いのに「事始め」とはおかしな話ですが。。。思い立ったが吉日やらないわけには行きません。
そんなわけで早速サンプルコードを見てみます。

import org.opencv.core.Core; 
import org.opencv.core.Mat;  
import org.opencv.imgcodecs.Imgcodecs;
 
public class ReadingImages {
   public static void main(String args[]) { 
      //Loading the OpenCV core library  
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); 
     
      //Instantiating the Imagecodecs class 
      Imgcodecs imageCodecs = new Imgcodecs(); 
     
      //Reading the Image from the file  
      String file ="C:/EXAMPLES/OpenCV/sample.jpg"; 
      Mat matrix = imageCodecs.imread(file);
     
      System.out.println("Image Loaded");     
   } 
}

赤字で書いている部分が気になったのでJavaDocAPIを参照してみます。

参考サイトからコードをパクった感じにして以下の様にコードを組みました。

<読み込んだ画像>


<実行結果>

import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;

/**
 * OpenCVの機能を実装するクラス。
 * 
 * @author takunoji
 *
 * 2018/11/11
 */
public class ReceiptCv {
	Imgcodecs imgCodecs;
	static {
		System.loadLibrary("opencv_java343");
	}

	public static void main(String[] args) {
		ReceiptCv rece = new ReceiptCv();
		rece.loadImg("download-1.jpg");
	}

	/**
	 * コンストラクタ
	 */
	public ReceiptCv() {
		imgCodecs = new Imgcodecs();
		
	}
	
	private void loadImg(String fileName) {
		Mat matrix = Imgcodecs.imread(getClass().getResource("/sampleImages/" + fileName).getPath());
		System.out.println("type: " + matrix.type());
		System.out.println("dims: " + matrix.dims());
		System.out.println("height: " + matrix.height());
		System.out.println("width: " + matrix.width());
		System.out.println("rows: " + matrix.rows());
		System.out.println("cols: " + matrix.cols());
	}

	public void helloCv() {
		Mat m = Mat.eye(3, 3, CvType.CV_8UC1);
		System.out.println("m = " + m.dump());
	}
}

処理の概要

  1. メインメソッドでこのクラスをインスタンス化、loadImg()に「”download-1.jpg"」を私て実行します
  2. "resources/sampleImages/download-1.jpg"を読み込んでMatを返します、
  3. Matの中身をコンソールに表示 

読み込んだ画像は「レシート」です。家計簿を書く時に使うでしょ?(笑)

関連ページ

  1.  Java OpenCV 環境セットアップ(on Mac)
  2. Java Install Eclipse〜開発ツールのインストール〜
  3. Java Doc読解 BufferedReader
  4. Java Doc 読解〜BufferedWriter〜