Archive for the ‘Linux’ Category

terminal

まとめてjpegにするワンライナーを書きました。

find . -mindepth 1 -name '*.HEIC' | xargs -I@ basename @ .HEIC | xargs -I@ sips --setProperty format jpeg @.HEIC --out @.jpg

gistの方にも置いておきます。

python-logo-master-v3-TM

単眼カメラの画像に対してAIを使って深度の推定をする。
FCRN-DepthPredictionというオープンソースのソフトウェアを使う。

VirtualBoxを使ってUbuntu16.04LTSをインストール。
まっさらな環境から主に下記URLの通りの手順を踏んでインストール。

$ git clone https://github.com/iro-cp/FCRN-DepthPrediction.git
$ cd FCRN-DepthPrediction

virtualenvを使って、Pythonの仮想環境を使って作業を勧めていく。

# sudo apt install virtualenv
$ virtualenv -p python 3.5 python 3.5
$ source 3.5/bin/activate
(python3.5)$

必要なパッケージのインストール

(python3.5)$ pip install tensorflow==1.15.0
(python3.5)$ pip install opencv-python
(python3.5)$ pip install matplotlib
(python3.5)$ pip install Pillow
(python3.5)$ pip install numpy
(python3.5)$ pip install argparse

深度計算の学習済みモデルを取得、展開

(python3.5)$ cd tensorflow/models
(python3.5)$ wget http://campar.in.tum.de/files/rupprecht/depthpred/NYU_FCRN-checkpoint.zip
(python3.5)$ unzip NYU_FCRN-checkpoint.zip

この時点でtensorflow/modelにあるファイル一覧

__init__.py
fcrn.py
NYU_FCRN.ckpt.index
__pycache__
fcrn.cpython-35.pyc
__init__.cpython-35.pyc
network.cpython-35.pyc
NYU_FCRN.ckpt.meta
NYU_FCRN.ckpt.data-00000-of-00001
network.py
NYU_FCRN-checkpoint.zip

tensorflowディレクトリに戻り、実行する

(python3.5)$ cd ..  ([クローンしたトップディレクトリ]/tensorflow に移動)
(python3.5)$ ls     (下記のファイル/フォルダがあるはず)
models                predict.py
(python3.5)$ python predict.py models/NYU_FCRN.ckpt [入力画像のファイルパス]

ここで、PythonのTK_interがないというエラーが出た。
これはpipではなく、aptを使ってインストールする。

$ sudo apt-get install python3-tk

無事動作を確認。

SnapCrab_No-0062

下記URLを参考にさせていただきました。

Tensorflowの深度推定モデルを試してみる - Qiita

非常に助かりました。
ありがとうございます。

今年の末にyahooブログがサービスを終了するにともなって、そのブログをwordpressに移行したいという依頼があった。
その中で、インポート用のテキストファイルから画像ファイルのリスト化をする処理の部分でawkを使ったところ、一行に2つ以上のimgタグとsrcが存在した場合、上手く要素を取得できないという問題に行き当たった。

こういう状態↓
dbf3ea701fd1719c9365a88c266f7709.png

私は最初、キャプチャーの位置を()でグルーピングして\1,\2などで取得するという方法しかわからなかった。
しかし、これでは当然、一行に3つ以上の要素がある場合マッチできない。

結局的に以下のコードでうまく行った。

awk 'BEGIN{FS="src=";}
{
	for(i=2;i<=NF;++i){
		if(match($i,/"[^"]*"/)){
			print substr($i,RSTART+1,RLENGTH-2);
		}
	}
}' ./source.txt

フィールドセパレーターを"src="に設定してあげることで、一行はimgタグのsrcで分割される。
iの初期値が2から始まっているのは、awkのカウントは0オリジンではなく、1オリジンであり、なおかつ"src="で区切られたフィールドの2つ目からマッチの試行を行いたいため。
あとは行中のマッチ位置のインデックスをRSTARTとRLENGTHで取得し、substr関数で切り抜く。