Blog


Linuxでバイナリを実行したとき、そのようなファイルやディレクトリはありませんと出る

よくJuliusを実行するのですが、Julisを実行するときにたまに「そのようなファイルやディレクトリはありません(No such file or directory)」というエラーが出てくるときがあります。

もちろん指定したパスにはちゃんとバイナリが存在するのですがbashはそこにファイルはないとエラーをはいてきます。

しばらく悩んでると、どうやら64bit Linuxで32bitバイナリを実行しているかららしいです。

 

「file 実行バイナリ」のコマンドを実行してみて、executableな32bitみたいな表記が出てきて、使っているlinuxが64bitならこれが問題みたいです。

解決方法はディストリビューションによって違うのですが、用は32bitバイナリの実行環境(ライブラリなど)を入れることで実行できるようになります。

Debianの場合はこんな感じらしいです

 

私はArchLinuxを使っていたのでmultilibの有効化、パッケージの更新を行い、以下のパッケージを入れました

32bitバイナリだから実行できないならそういうエラー吐いてほしいですね




カレンダーの値を扱う

UWPではWindows.Globalization.Calendarクラスを使うと簡単にカレンダーの値を扱うことができます。

※System.Globalization名前空間にもCalendarというクラスがありますがこちらではありません。

Calendarをnewするとデフォルトでは今日の日付を指すことになります。

Add*メソッドを使用すると明日や1週間後の日付を計算できます。

Add*メソッドにマイナスの値を入れるとn日前など過去に遡ることができます。

1




Microsoft Cognitive Service FaceAPIを使う

Cognitive ServiceのFaceAPIを使うと顔画像からいろんな情報を入手できます。

具体的には顔認識、類似顔検出、グループ化とかいろいろできるみたいです。

https://azure.microsoft.com/ja-jp/services/cognitive-services/face/

ドキュメントはここ

https://www.microsoft.com/cognitive-services/en-us/face-api/documentation/overview

APIKeyの取得

APIを使うためにはAPIKeyが必要になります。

CognitiveServiceはAzureのサービスの一環なのか、Azureのポータルから取得できます。

キャプチャ

作成したインスタンス?を表示して、Keysに入っているのがAPIKeyです

キャプチャ

APIを使う方法

APIを使うためにはhttpのエンドポイントもありますが、プラットフォームが.NetならNugetに公式のライブラリがあります。

FaceAPIの場合はMicrosoft.ProjectOxford.FaceをNugetから入れます

キャプチャ

顔の特徴点の抽出

FaceDetectでは顔の特徴点を抽出できます。具体的に抽出できる特徴点はこんな感じ

https://www.microsoft.com/cognitive-services/en-us/face-api/documentation/face-api-how-to-topics/howtodetectfacesinimage

実際にFaceDetectするにはFaceServiceClientをAPIKeyで初期化し、DetectAsyncメソッドを呼び出し、画像のURLを入れます。

画像の送信方法としては、URLのほかに.NetのStreamを入れることもできます。

実際に検出してみるとFaceLandmarksにたくさんの顔の特徴点を取得することができました。




Dpiを取得する、Dpiの変更を検知する

Dpi(Dots per inch)とは1インチに何ピクセルあるかを表した値であり、デバイスのDpiを検知してDpiに最適な画像を選択、表示すべきです。

UWPでDpiを取得するには以下のコードを実行します。

デバイスのDPIが変更されたことを検知するには以下のコードを実行します。

キャプチャ

デバイスのDPIは設定からスケールを変更することで設定することができます。

キャプチャ