■ OpenCV とは?
* Open Source Computer Vision Library * BSDライセンス(商用利用可能) * 画像・動画を処理するのに必要な様々な機能を提供
主な機能
* フィルター処理 * オブジェクト追跡(Object Tracking) * 領域分割(Segmentation) * カメラキャリブレーション(Calibration) * 特徴点抽出 * 物体認識(Object recognition) * 機械学習(Machine learning) * パノラマ合成(Stitching) * コンピュテーショナルフォトグラフィ(Computational Photography) * GUI(ウィンドウ表示、画像ファイル、動画ファイルの入出力、カメラキャプチャ)
サポートOS
* Windows * Linux * Mac OS * iOS * Android
サポート言語
* C(ただし、3.0からメンテナンス対象外) * C++ * Python * Java * C#
公式サイト
http://opencv.org/
Download
http://opencv.org/downloads.html
■ 設定
環境
* OS : Windows10 * Eclipse : Mars.2 Release (4.5.2) * OpenCV : Version3.1.0 ※ OpenCV v2.4系でも同じ
手順
[1] 以下のURLから、OpenCV(今回は「opencv-3.1.0.exe」)をダウンロードする
http://opencv.org/downloads.html
[2] ダウンロードしたファイル「opencv-3.1.0.exe」をダブルクリックし、 任意の場所(今回は「C:\work\」)を指定する [3] 環境変数 Path にOpenCVのdllファイルの パス(「今回はC:\work\opencv\build\java\x64」)を指定する [4] Eclipseを立ち上げて、 JARファイル(「今回はC:\work\opencv\build\java\opencv-310.jar」)をImportする
補足
* サンプルなどの実行時に、UnsatisfiedLinkErrorが発生した場合は、 以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2016/09/29/004036
■ サンプル
使用する画像
http://www.cs.cmu.edu/~chuck/lennapg/playboy_backups/lena_lg.jpg
例1:グレースケール変換(Hello World的に)
OpenCV v3.1系
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; public class HelloWorld { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); String input = "C:/temp/lena_lg.jpg"; String output = "C:/temp/result.jpg"; Mat matrixSrc = new Mat(); Mat matrixDst = new Mat(); // 入力画像の読み込み matrixSrc = Imgcodecs.imread(input); // カラー画像をグレー画像に変換 Imgproc.cvtColor(matrixSrc, matrixDst, Imgproc.COLOR_BGR2GRAY); Imgcodecs.imwrite(output, matrixDst); System.out.println("Done!"); } }
OpenCV v2.4系
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.highgui.Highgui; import org.opencv.imgproc.Imgproc; public class HelloWorld { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); String input = "C:/temp/lena_lg.jpg"; String output = "C:/temp/result.jpg"; Mat matrixSrc = new Mat(); Mat matrixDst = new Mat(); // 入力画像の読み込み matrixSrc = Highgui.imread(input); // カラー画像をグレー画像に変換 Imgproc.cvtColor(matrixSrc, matrixDst, Imgproc.COLOR_BGR2GRAY); Highgui.imwrite(output, matrixDst); System.out.println("Done!"); } }
参考文献
OpenCV入門【3.0対応】
http://www.buildinsider.net/small/opencv/001
OpenCVで学ぶ画像認識
http://gihyo.jp/dev/feature/01/opencv
Java版OpenCV入門
http://opencv.blog.jp/java/%E4%BD%BF%E3%81%84%E6%96%B9
EclipseでJava用のOpenCVを使う(for windows)
http://qiita.com/livlea/items/a853c374d6d91b33f5fe
OpenCV 3.1 eclipse
http://pg-fan.com/?p=549
関連記事
Java
OpenCV ~ 基本編 / 画像編集 ~
https://dk521123.hatenablog.com/entry/2016/09/28/231829
【Java】 OpenCV ~ 基本編 / 顔検出 ~
https://dk521123.hatenablog.com/entry/2016/06/28/000927
OpenCV のトラブルシューティング
https://dk521123.hatenablog.com/entry/2016/09/29/004036
C
C# で OpenCV を使用する ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2019/05/07/232536
C# で OpenCV を使用する ~ 画像の位置合わせを考える ~
https://dk521123.hatenablog.com/entry/2019/05/08/004047
Python
OpenCV ~ 画像認識 ~
https://dk521123.hatenablog.com/entry/2020/10/06/233343