イントロダクション
ついに最近流行りの技術「人工知能」への入り口画像解析を始めたいと思います。以前、中途半端にPythonでOpenCvを使ったのですが、すごく簡単に扱えて「あ〜したらこ〜なる」なんてことを考えさせられる。。。そんなフレームワークだと思います。
OpenCVは、どんなものなのか?
事始めということで
年の瀬も近いのに「事始め」とはおかしな話ですが。。。思い立ったが吉日やらないわけには行きません。
そんなわけで早速サンプルコードを見てみます。とりあえずはどんな動きをするのか見てみようということです。
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";
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()); } }
OpenCV事はじめ
処理の概要
- メインメソッドでこのクラスをインスタンス化、loadImg()に「”download-1.jpg"」を私て実行します
- "resources/sampleImages/download-1.jpg"を読み込んでMatを返します、
- Matの中身をコンソールに表示
読み込んだ画像は「レシート」です。家計簿を書く時に使うでしょ?(笑)
OpenCVは画像を読み込んで何かしらの画像編集処理を行うフレームワーク(ライブラリ)ということで、画像ファイルを読み込んでみました。
灰色に変換「グレースケース化」や指定した色のン領域をを表示したり、いろいろなことができるようです。
でわでわ。。。
関連ページ
- Java OpenCV 環境セットアップ(on Mac)
- Java Install Eclipse〜開発ツールのインストール〜
- Java Doc読解 BufferedReader
- Java Doc 読解〜BufferedWriter〜