H2 Transmission

本・漫画・資格・PC・自分用メモなどを書く雑記ブログ

【Mac】JavaでOpenCV4.1の環境構築と特徴抽出(SIFTやSURF)

はじめに

MacでのOpenCVの環境構築で苦戦したので備忘録として残しておこうと思います。

色々なサイトを参考にしながらやりましたが理解するまでなかなか大変でした。

自分がやった工程もあっているかわからないですが参考になれば・・間違ってたらすみません。

経緯

OpenCV2系を利用したSIFTやSURFでの特徴抽出をするプログラムをOpenCV4.1で動かしてみようと思い、今回の環境構築を始めました。

Windowsやラズパイ、言語ではPythonをつかった内容での参考記事は多かったのですがなかなかMacJavaという組み合わせでの記事があまりなく苦戦を強いられました。

OpenCVを使うのならやっぱりPythonがいいのでしょう。でも、今回はJava

でやろうと決意。

ハマったこと

OpenCV2系では標準で使用できていたSIFTやSURFを利用するためのクラスファイルがOpenCV4.1では標準機能にはいっていなかったことや、cmakeでOPENCV_NABLE_NONFREEというのをチェックいれなければSIFTが使えないということが後でわかったことなど・・

そんなに大変ではなかったですが行ったり来たりをしました。

それでは、早速導入について。

参考記事:Windows10でOpenCV3.4.1とopencv_contrib環境構築

 

導入方法

①OpenCV4.1.0をダウンロード

OpenCVのサイトから4.1.0をダウンロードします。
OpenCV-Releases の「Sources」をクリックしてください。 

f:id:yumeoimusi:20190714154537p:plain

クリックすると、zipファイルがダウンロードされるので任意の場所に解凍してください。標準機能だけでよいのであれば②のファイルのダウンロードはしなくてもよいです。

opencv_contribのダウンロード

opencv_contribもダンロードしておきます。
私はここを最初にしていなかったので最初からやり直すことになりました。

私の場合はSIFTやSURFを使いたかったのでこのファイルが必要でした。
必要ない人はスルーしてください。

opencv/opencv_contrib(Github) から4.1.0のzipをダウンロードします。

f:id:yumeoimusi:20190714155227p:plain

 ダンロードしたファイルは解凍して、①で保存した場所と同じところに置いておくのがよいでしょう。

③CMakeのダウンロード

Windows環境でopencv_contribを使わない場合はビルドしなくても大丈夫でしたが、Windows環境でもopencv_contribを使う場合は①②でダンロードしたファイルからビルドが必要のようです。

私は今回はMac環境で構築したかったためいずれにしてもビルドは必要のようです。
もともとはWindowsOpenCVを使えるようにしていたので、このビルドしなければいけないということを理解するまでちょっと時間がかかりました。

ビルドするためには当初はターミナルからcmakeコマンドでビルドしていましたが、今回はオプションの設定もありターミナルでは設定を記載するのがちょっとめんどいと感じたのでCMakeというアプリケーションを使用することにしました。

最初はこのアプリケーションの存在をしらなかったのですが使ってみると便利ですね。

ということで、CMakeのサイトの「Download Latest Release」をクリックして早速ダンロードします。

 ダンロードが完了したら、そのままインストール作業を行ってみましょう。

④CMakeを使ってビルド

まず、CMakeを使わないでターミナルでビルドを試みたときに参考にした記事は以下の記事です。

参考記事:Java(Eclipse)+OpenCV3.2.0でSURFとかSIFTを使うための環境構築(Mac)

参考記事:MacにOpenCVをインストールする

このあたりを参考にすればCMakeを使わずに、ターミナルでもいけるのではないかと思います。

それではCMakeを使ってOpenCVをビルドします。

ビルドしたファイルを保存するためのフォルダを作成します。私は①でダンロードし解凍して出来たフォルダの中に「build」というフォルダを作成しました。

準備が完了したので、CMakeを起動して「Where is the source code」の欄に①でダンロードして解凍したフォルダを指定します。その下の「Where to build the binaries」には先程作成した「build」フォルダのパスを指定します。

私の場合はこのように指定しました。参考までに。

f:id:yumeoimusi:20190714163837p:plain

①でダンロードして解凍してできたファイルのフォルダ名にはバージョンが入っていると思いますが、私は名前を変更してバージョンを消したので以上の画像のように「opencv」のみになっています。

指定できたら「Configure」をクリックしましょう。

次の画面では「Specify the generator for this project」の欄を「Unix Makefiles」を選択しました。そして「Finish」です。

うまくいけば「Configuring done」と表示されると思います。

⑤その他の設定

④までで標準機能はたぶんビルド完了なのですが、私の場合はopencv_contribを使用したかったのとSIFTやSURFを使用したかったのでまだ設定があります。

最初にやったときには④までで終わらしていたので、プログラムが動きませんでした。

それでは続きを書きます。

⑤-1 opencv_contribをビルドするための設定

opencv_contribをビルドするためにはオプションでファイルを指定しなければいけないようです。

OPENCV_EXTRA_MODULES_PATH」の項目に②でダウンロードした「opencv_contribe」フォルダの「modules」を指定します。

f:id:yumeoimusi:20190714164935p:plain

⑤-2 SIFTを使うための設定

SIFTを使うためにはOPENCV_ENABLE_NONFREEというオプションにチェックをしなければいけないようです。
実行しようとしたらエラーがでて調べたら、参考になるサイトがありました。

参考記事:SIFTを使おうとするとError:The function/feature is not implementedと出力された

 同じように私もチェックします。

f:id:yumeoimusi:20190714170930p:plain

⑤-3 OpenCVのインストール場所の設定

インストール場所も気になる人は設定できます。私はデフォルトのままにしましたので特に変更はしていません。私の場合はデフォルトで以下の場所を指定していました。

f:id:yumeoimusi:20190714171354p:plain

⑤-4 Configureを実行してGenerate

諸々の設定が終わったら、最初と同じく「Configure」をクリックして待ちます。
何事もなく終われば、次に「Generate」をクリックしてまた待ちます。

Generating done と表示されれば無事完成です。

 makeとinstall

⑤まで終わったら最後にターミナルでmakeとinstallを実行します。

参考記事:High SierraにOpenCV3.4.1をインストールする

私はデスクトップに①で解凍したフォルダ「opencv」を置いているのでターミナルを開いて以下の場所まで移動します。

/desktop/opencv/build

そこで「make」します。

次に同じ場所で「make install」をします。

これで終わりです。

あとは開発環境によってインストールした先のパスを指定する必要があるかと思います。 libファイルやdllファイルがある場所を指定します。

さいごに

色々な方が書いてくれている記事を参考になんとか構築することができました。

記事を書いてくれた方々に感謝です。

しかし、OpenCV2系のプログラムのまま、OpenCV4.1.0は動きません。

使用するAPIが微妙に変わっていたのでそこも変更します。

imreadメソッドやFeatureDetectorクラスなどそのまま使えないものがありました。

この変更点についてはまた違う記事で書こうと思います。

 

AppleWatchSeries4におすすめのベルトとは

AppleWatchSeries4を購入してからもうすぐ3か月が経とうとしています。

AppleWatchの魅力の一つとしてあるのがベルトの交換だと思います。

純正品がやはり洗練されていてベストだと思いますが、簡単にベルトが変えられるので気分によって頻繁に変えたい願望が私にはあります。

ということで数ヶ月の間に私が購入したベルトについて書いていこうと思います。

購入したのは純正品ではなくサードパーティ製のものです。

1.ミラネーゼループのブラック 

 ベルトを調べていて一番人気がありそうなのがこのベルトでした。

服の裾に金属が引っかかって、裾がぼろぼろになるというレビューもありましたが私が装着している間にはそれは起きませんでした。でも、品質にはばらつきがありそうなので注意は必要なのかもしれません。

個人的な感想ですが、44mmサイズなのもあるかもしれませんがちょっとベルトがきゃしゃな感じがしました。あとは磁石での固定だったので気持ち的に取れてしまうのではないかという不安もあり、現在はほとんど使用していません。

純正だったら安心できる品だと思います。

 

2.ステンレス スチールバンド

 もともとの使用していたアナログの時計はステンレスのバンドだったので、次にこのベルトを購入してみました。

評価も高そうだったJEDirectのブラックをチョイス。

ベルトの調整は簡単に行えました。ただステンレスバンドの弱点としては微調整ができません。私の腕にちょうとフィットしたサイズへの調整ができませんでした。

一つ多くすると緩く、一つ減らすとちょっときついという状況・・・

残念ながらほとんどせずに家で眠っています。そのうちつけることはできるでしょう。

見た目のデザインとしてはよかったので残念でした。

 

3.エルメス風本革レザーバンド

 次に購入したのはレザーバンドです。

Appleで純正でも販売されているエルメスのデザインに酷似しているものを購入しました。このデザインは普通のレザーバンドより私はおしゃれに感じたためです。

この商品は現在のところ私の中で一番のオススメです!

寝ているときもしていますがあまり気になりません。

これから暖かくなるにつれてどう感じるかはまだわかりませんが。

見た目も値段にしては安っぽくなく、他の人からはエルメスのバンド!?と間違われることもあります。

まとめ

現在は、最後に紹介したエルメス風のレザーバンドと、純正のNikeモデルのデフォルトでついているバンドを使いまわしています。

購入当初は画面に保護シールを貼ろうかと思っていましたがレビューの評判も悪かったので購入せずなにも貼らず使っていました。今もとくに問題なさそうなので保護シートはつけずに使い続けようと思います。

次に狙っているのはアウトドアとかするときように本体と画面の保護性能が高いものの購入を予定しています。

この記事は少しでも迷っている人の参考になればよいと思います。

 

AppleWatchNike+Series4を買うに至った経緯

この度、AppleWatchを購入したのですが、購入を決めるまでに試したことがあります。

AppleWatchSeries4についてのレビューを書こうと思ってブログを開いたのですがまずはその前に、買おうと決心した経緯を書こうと思います。

購入の検討

まずは私はAppleWatchに限らず、スマートウォッチが使いやすいのかどうかを検証しようと思いました。
そこで値段もあまり高くなく、付けていてもあまり目立たないスマートブレスレッドを購入してどれほど便利かを試してみることにしました。

スマートブレスレッドを選ぶ時にしっかりと調べたのは、iPhoneに届いた「通知」がしっかりとスマートブレスレッドにも来るかというところです。

意外とLineだけやメールだけなどの商品もありますので気をつけてください。

私はSlackなどの他のチャットツールも使用していますのでそこからの通知が来るかが今回購入するうえでは必須でした。

レビューについても様々なので、通知が来ると書いている人もいれば通知が来ないと書いている人もいてなかなか悩みます。

そこは値段も安いので、だめだったらしょうがないという気持ちでiWownfitのi6HRCというスマートブレスレッドを購入しました。

 使ってみると思っていた以上に良かった。

同じ商品でも安いので当たり外れがあるのかもしれませんが、iPhoneで設定している通知はほぼスマートブレスレッドにも飛んできていました。

わざわざ携帯をポケットから出さずとも、何が来ているのかを事前に手元で確認できるのは予想以上に便利でした。

もちろん電話が掛かってきたときも振動します。(出ることはできませんが・・)

充電ですが、1週間とまではいかないですが5日間くらいは充電しなくても電池が持ちます。

最初はお試しで購入したのですが、付けてみると普通の時計をするより、購入したスマートブレスレッドを付けることが多くなりました。

スマートウォッチは買う価値があるのかを試すために安いスマートブレスレッドを購入したのですが、これはこれで満足できるものでした。

決してi6HRCが安っぽいわけではないのですが、ただやはり高いスマートウォッチに比べると高級感は敵いません。

そこから私の葛藤が始まります。

そしてAppleWatchSeries4が発売されたのです。

使っている人のレビューを読み漁る日々を過ごし、購入をすると決断することになります。

今、AppleWatchを購入して数日が経過しましたが後悔はしていません。

まだ数日なので気持ちが変わるかもしれませんがこれから使い倒していこうと思います。

購入を検討してまだ迷っている人はAppleWatchの購入を勧めたいですが、まずは安いスマートウォッチもしくはスマートブレスレッドで試してみるのも良いかもしれません。場合によってはそれでも機能的に満足する人も多いのではないかと思います。

まずは試してみることが必要です。

 

 

 

 

ParallelsDesktopでCentOSLinuxを入れてNetbeansでJavaを動かす

普段はMacを使っているのですが、たまにWindows環境も必要なのでParallelsDesktopの有料版を購入してWindowを動かしています。

ブートキャンプで入れることも考えましたが切り替えがめんどくさいので購入に踏み切りました。

動きももっさりすることなく快適に使えています。

今回はCentOSを使用する必要が出てきたのでParallelsDesktopにもうひとつ仮想環境を作ることにしました。

無料版のLiteでも試しましたが今の所そっちでも問題なく動きますね。

まずはCentOSのイメージを以下のサイトからダウンロードします。

Parallelsの場合、イメージがなくてもParallelsのウィザードから入れることができましたがユーザーなど勝手に初期値を決められてしまうため、イメージから入れなおしました。

http://ftp.riken.jp/Linux/centos/7/isos/x86_64/

Parallelsへのインストールはスムーズにいくと思います。

続いて、CentOSJavaを動かせるようにします。

今回はNetbeans8.2とJava1.8を入れることにします。

セットになっているものがあるのでバラバラにいれるより楽な気がしたため以下のサイトからshファイルをダウンロードしました。

JDK 8u111 with NetBeans 8.2

端末から上記でダウンロードしたファイルを実行します。

上記のダンロードファイルがあるディレクトリまで移動して以下のコマンドを実行します。

sudo sh jdk-8u111-nb-8_2-linux-x64.sh

これでインストールが完了です。

私の環境ではこれで環境構築ができました。

ただ、少しレイアウトが崩れていて文字が半分隠れたりしているので直したいと思っています。(どう直すのか・・)

フォントも見づらいため変更が必要ですね。

EclipseでJOGLを動かしてみる

JavaOpenGLを使ってみようと思い、JavaOpenGL(JOGL)で動作確認を試みました。開発環境はEclipseで丁寧に書かれていたサイトがあったのでそれを参考にしました。

JOGLをセットアップする方法 - 3D技術研究所Wiki

ほぼ、ここを見れば設定から実行まで出来ると思います。

上記のサイトにも記載されていますが、JOGL関連のファイルを以下のリンクからダウンロードしておきます。

http://jogamp.org/deployment/jogamp-current/archive/

私が見た時点では最終更新日が2015年でして一部、記載が古い箇所があったのでここに備忘録として記載しておきます。

 

import static javax.media.opengl.GL.*;

の記載が現在は古いようで使えないそうです。エラーがでます。

ここの記載を

import static com.jogamp.opengl.GL.*;

に変更すれば問題なく動きます。

 

NetBeansで動かしてみたいので、Eclipseでの設定を参考にしてNetBeansでも動作確認してみようかと思っています。

NetBeansでの環境設定が書かれているページってあまりないんですよね。