Takunojiの日記

自分が勉強したプログラム技術メモ

Java OpenCV Lv2: JavaFX + ビデオキャプチャを動かす

イントロダクション

前回は、OpenCVを起動するための準備をやりました。

今回は、JavaFX上でOpenCVを起動します。

 

実装

zenryokuservice.com

 

作業はこんな感じでした。

EclipseOpenCV用のプロジェクトを作る

www.youtube.com

 

画面(GUI)で画面を作成するツールのインストール

www.youtube.com

 

3. 作成した画面をプログラムと連結する

www.youtube.com

 

4.JavaFXよりOpenCVビデオキャプチャを起動する

www.youtube.com

Java OpenCV Lv1: JavaFXで画像を表示する

イントロダクション

OpenCVPythonではなくJavaで動かそうと色々と調べて。。。

結局は下のサイトを参考にしてやるのが一番ということになりました。

Welcome to OpenCV Java Tutorials documentation! — OpenCV Java Tutorials 1.0 documentation

 

そこには、OpenCVでHigh GUIを使用して画像の表示などを行なっていたのですが、今回使用するOpenCV3.Xでは、それを使用しない方向に変わったということで。。。

 

JavaFXを使用して画像を確認する方向でやっていくことにするようです。(チュートリアルサイトに記載あり)

そんなわけで、以下のものを設定します。

  1. Eclipseのセットアップ
  2. Eclipse SceneBuilderを追加する
  3. JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
  4. Java OpenCv Lv1 〜入門: 写真の表示〜

<作業の動画>参考にどうぞ

1. JavaFXプラグインEclipseに追加する

www.youtube.com

 

2.OpenCVをセットアップする(Eclipse)

www.youtube.com

 

 

Java OpenCV セットアップ

イントロダクション

今まで、3Dグラフを作成していましたが今度は、画像から文字を取得する機能を作ります。レシートの写真から買い物の詳細を取得するためです。

そんなわけでOpenCV

OpenCVをいじってみる

www.youtube.com

環境セットアップ

zenryokuservice.com

 
画面作成ツール

Eclipse SceneBuilderを追加する – PGボックス

www.youtube.com

 

JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~ – PGボックス

www.youtube.com

 

 

 

3Dグラフを作る

イントロダクション

家計簿アプリの作成で3Dグラフを作りました。現状はグラフっぽくないのですが…

それでも微調整を残しひと段落です。

http://zenryokuservice.com/wp/2018/11/10/eclipse-アプリ作成-lv7〜cubeを日付順に並べる〜/

残タスク

・グラフの日付が分からなくなる

→月〜日まで、日〜土までを切り替えて表示する機能は使ったのですがどこが1日なのか、現状では分からなくなります

f:id:Takunoji:20181111223746p:image

・支出などの金額がわからない

→Cubeの高さにより金額を表す予定ですが、メモリなどが無いとぱっと見ではどの位の出費かわからない。

今後の予定

残りの画面実装は、アイデアを出すまで保留、次はレシートとの読み込み処理実装します。

使用する技術

機械学習Open CVを使います。

 

自分もディープラーニングできるかな?

3Dグラフを作る〜アプリ設計〜

イントロダクション

家計簿アプリで月の支出を一覧出来る3Dグラフを作りたいと思っています。

でも、見栄えとか…「一目瞭然出来るか?」がこのアプリの要になります。

3Dグラフの特徴(自分の考え)

  1. 少ない領域で情報が沢山表示出来る
  2. 沢山の情報があるので分かりづらくなる

まとめると、通常の棒グラフと同じ情報量にすれば分かりやすいが、3Dにする意味がない

やたらに情報を詰めると意味がわからない。

考える事

情報量が多いと意味がわからないのは「グラフの示すものが、分からなくなるから」とした時にどんな対処法があるか?

グラフ内の示すものに名前をつけて表示するのはどうだろうか?

結論

作ってから考えよう(笑)

注意点

プログラムを組むとき全体に言える事だけど、追加・修正しやすいように作る

→作成するメソッドや処理の依存度を下げるかなくす様に作る

<悪い例>

// あなたの年齢を表示するメソッド

public void yourAge() {

int age = 12;

System.out.println(“あなたの年齢は” + age + “ 才です”);

}

 

<良い例>

public void yourAge(String name, int age) {

System.out.println(name + “の年齢は” + age + “ 才です”);

}

悪い例は「あなたの年齢は12才です」しか表示出来ませんが

良い例は誰の年齢でも表示出来ます。

 

このように、汎用的な処理を用意してメインのルートになる部分と道具として使う部分(プログラム)に分けて

不要な処理は作らない

様に作ると後でメンテナンスする時や人に説明する時など便利です。

そして、一切の無駄がなく見やすいコードは「美しいコード」と誰もが言うでしょう。自分もそこを目指しています。

ソースの改修サンプル

家計簿アプリの作成(Open GLの理解を含む)でコードを改修しながらやってます。良かったらどうぞ。

<Cube(立方体)の表示>

http://zenryokuservice.com/wp/2018/11/03/eclipse-アプリ作成-lv2〜家計簿を作る土台作り〜/

<Cubeを並べる>

http://zenryokuservice.com/wp/2018/11/04/eclipse-アプリ作成-lv3〜3dグラフ用cube作り〜/

<Cubeを並べて7x5のマスを作る>

http://zenryokuservice.com/wp/2018/11/04/eclipse-アプリ作成-lv4〜3dグラフ用cubeに高さを与える〜/

 

でわでわ。。。