イントロダクション
今までの学習で、OpenCV(JavaCV)でフィルター処理(①)と描画処理(②)ができることがわかりました。
- Java OpenCV Lv2 〜画像を表示する〜 シンプルに画像を表示する
- Java OpenCV Lv3 〜画像の平滑化(smooth())〜 ①
- Java OpenCV Lv3 〜画像にガウシアンフィルタ(GaussianBlur())〜 ①
- Java OpenCV Lv3 〜画像に中央値フィルタ(medianBlur())〜 ①
- Java OpenCV Lv4 〜画像の中身をみてみる〜 ②
Gitからのプロジェクト取得
イメージファイル(PNG, JPGなど)の中身は数値型の配列になっていることがわかったので、次はそいつらをコントロールする方法を学びます。
<参考サイト>
学習ポイント
- 数値型の配列([0, 255, 255, 0, ...])の値はRGBが割り当てられていることを確認
- Matクラスでの描画方法(線を引く)
早速実装に入ります。
注意点として、白はデータ上「255」になります。なので白い背景を使用したら全部が「255」になります。
そして、実装するときには以下の手順でやります。
- OpenCVのライブラリを読み込む(staticで読み込みます)
- white100x100.png(背景)をロードする
- 線の開始点、終点を指定する(Point)
- Imgproc.line()で描画する
<実行結果>
<ソース(OpenCVTest5.java>
/** * メインメソッド、書き方は決まっている。 * イメージファイルを読み込んで線を引く * * @param argsプログラム引数 */ public static void main(String[] args) { // 100x100の白いPNGからのデータを作成する Mat src = Imgcodecs.imread(OpenCVTest5.class.getResource("/images/white100x100.png").getPath()); Point pt1 = new Point(0,0); Point pt2 = new Point(100,100); Imgproc.line(src, pt1, pt2, new Scalar(240, 255, 240), 4); System.out.println(src.dump()); // 自作のJFrame拡張クラス new ViewFrame(src); }
Imageデータを編集(描画)してから、表示に使用しているViewFrameクラスはjavax.swingパッケージ(Swing)を使用しています。
<自分で試す手順>
- Eclipseをセットアップする
- 関連ページ一覧のOpenCV(JavaCV)のセットアップを行う
- Gitから作成したソース、リソースをダウンロード
- Eclipseでプログラムを実行する
関連ページ一覧に補足になるような記事があります。
関連ページ一覧
Eclipse セットアップ
- 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 Lv3 〜画像に中央値フィルタ(medianBlur())〜
- 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〜画像の平均値をだす〜