nanoで行番号を表示する方法
nanoでファイルを編集する際に行番号を表示したかったのですが
設定ファイルを編集する必要があったので忘れないように記載しておく。
Nvidiaドライバの更新(RUNファイルを使用)
OpenCVでCUDAを使用しようと思い
CUDAを調べたら、現在 CUDA toolkit ver 10.0が最新であった。
せっかくなので10.0をインストールすることとした。
まず、Nvidiaドライバのバージョンを上げる必要があったので行った。
結構大変だったため、記録しておく。
以下、CUDAのバージョンごとの対応ドライバ
https://github.com/NVIDIA/nvidia-docker/wiki/CUDA#requirements
作業環境
作業内容
ドライバの入手
使用しているGPUの情報から検索して入手できる。
私は(GTX1080では)410.66だったが現在410.73(18/10/25に更新)になっていた・・・!?
https://www.nvidia.co.jp/Download/index.aspx?lang=jp
入手:NVIDIA-Linux-x86_64-410.66.run
ドライバのアップデート
参考:https://www.kunihikokaneko.com/free/linuxtoolchain/nvidia_ubuntu.html
Xサーバの停止
Xサーバ関係のdevパッケージのインストール
sudo apt install xserver-xorg-dev
nouveauの無効化(grubの設定を変更)
/etc/default/grubを編集する
sudo gedit /etc/default/grub
編集前 | GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" |
---|---|
編集後 | GRUB_CMDLINE_LINUX_DEFAULT="splash nouveau.modeset=0" |
grub-mkconfigで設定を出力
sudo grub-mkconfig -o /boot/grub/grub.cfg
Xサーバを停止
sudo /etc/init.d/lightdm stop
nvidia関連パッケージの削除
「Ctl」+「Alt」+「F1」で仮想コンソール(CUI)を起動
nvidiaパッケージの確認
dpkg -l | grep nvidia
nvidiaパッケージと「xserver-xorg-video-nouveau」の削除
nvidiaパッケージは一つ一つ確認しながら消したほうがよいかも。
私は面倒くさかったので一気に削除しました。
sudo apt remove --purge xserver-xorg-video-nouveau sudo apt remove --purge nvidia-*
再起動
sudo reboot
Nvidiaドライバのインストール
再度、Xサーバを停止
sudo /etc/init.d/lightdm stop
「Ctl」+「Alt」+「F1」で仮想コンソール(CUI)を起動
cd Download sudo sh NVIDIA-Linux-x86_64-410.66.run
インストールが開始される。
ライセンスの同意や32bit互換ライブラリのインストールなどが聞かれる。
確認
インストールが終わったら、
再起動してインストールされているか確認
nvidia-smi
以上。
fzfでDockerを快適にする。
fzfというツールは
標準入力から受け取ったリストから対話的に選択してその結果を標準出力に出力することができます。
これをdockerと組み合わせるとコンテナやイメージをコマンドラインで選択してrunやattachなどができます。
・インストールは以下を参考にしました。
第504回 インタラクティブフィルター「fzf」の活用:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
・docker用シェル関数は以下を参考にしました。
dockerコンテナの起動・停止をちょっと楽にするシェル関数 - Qiita
作業環境
・Ubuntu18.04.1
・Docker-ce 18.06.1
作業内容
fzfのインストール
インストーラをダウンロード
git clone https://github.com/junegunn/fzf.git ~/.fzf
インストール。すべてyesにしました。
cd .fzf ./install
.bashrcを読み込めば起動できます。
source ~/.bashrc
docker用シェル関数
シェルスクリプトを作って、sourceすれば以下のコマンドでdockerを起動できる
source docker_fzf.sh
docker-run | イメージを選択して起動できる |
---|---|
docker-run-x11 | イメージを選択して起動できる。ホストのGUIを利用できる |
docker-commit [image_name] | 引数にイメージの名前を設定して起動中のコンテナをcommitできる |
docker-copy [file_name] | 起動中のコンテナを選択して、引数に指定したファイルをコピーできる |
docker-attach | 起動しているコンテナを選択してにattachできる |
docker_fzf.sh
#!/bin/bash docker-run() { local container container="$(docker image ls | sed -e '1d' | fzf --height 40% --reverse | awk -v 'OFS=:' '{print $1,$2}')" if [ -n "${container}" ]; then echo "runing container from ${container} ..." docker container run -it --rm ${container} fi } docker-run-x11() { local container container="$(docker image ls | sed -e '1d' | fzf --height 40% --reverse | awk -v 'OFS=:' '{print $1,$2}')" if [ -n "${container}" ]; then echo "runing container from ${container} ..." xhost + docker container run -it --rm \ -e DISPLAY=$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ ${container} fi } docker-commit() { if [ $# -ne 1 ]; then echo "指定された引数は$#個です。" 1>&2 echo "実行するには引数に「イメージ名」が必要です。" 1>&2 exit 0 fi local container container="$(docker container ls -a -f status=running | sed -e '1d' | fzf --height 40% --reverse | awk '{print $1}')" if [ -n "${container}" ]; then echo "committing container to $1 ..." docker container commit ${container} $1 fi } docker-copy(){ if [ $# -ne 1 ]; then echo "指定された引数は$#個です。" 1>&2 echo "実行するには引数に「コピーするソースのパス」が必要です。" 1>&2 exit 0 fi local container container="$(docker container ls -a -f status=running | sed -e '1d' | fzf --height 40% --reverse | awk '{print $1}')" if [ -n "${container}" ]; then echo "moving $1 to container ..." docker container cp $1 ${container}:/tmp/ fi } docker-attach() { local container container="$(docker container ls -a -f status=running | sed -e '1d' | fzf --height 40% --reverse | awk '{print $1}')" if [ -n "${container}" ]; then echo "attaching container ..." docker container attach ${container} fi }
dockerfileでpython/opencv環境を構築する。opencv_contribも入れました。
前回、dockerで構築したOpenCV3.4.3にopencv_contribも追加しました。
作業環境
・Ubuntu18.04.1
・Docker-ce 18.06.1
作業内容
dockerfile
opencv contribには一部商用利用できないアルゴリズムが含まれる
xfeatures2dというモジュールでSURFやSIFTが含まれるようです。
これらを使用する場合には
CMAKEのオプションに-D OPENCV_ENABLE_NONFREE=ONを追加する必要がある。
FROM ubuntu:16.04 MAINTAINER kina <kina@kinacon.com> ARG PYTHON_VERSION=3.7.0 ARG OPENCV_VERSION=3.4.3 # プロキシ設定 ENV USER=xxxx \ PASS=xxxx \ PROXY=xxxx.xxxx.xxxx.co.jp:8080 # プロキシ設定(pip) ENV HTTP_PROXY=http://$USER:$PASS@$PROXY/ \ HTTPS_PROXY=http://$USER:$PASS@$PROXY/ # プロキシ設定(apt) RUN echo 'Acquire::http::proxy ''"'"http://${ID}:${PASS}@${PROXY}/"'";' \ > /etc/apt/apt.conf RUN apt update && \ apt install -y --no-install-recommends \ make \ cmake \ gcc \ g++ \ unzip \ wget \ build-essential \ nano \ zlib1g-dev \ libffi-dev \ libssl-dev && \ apt clean && \ rm -rf /var/lib/apt/lists/* # プロキシ設定(wget) RUN ( \ echo "https_proxy=http://${USER}:${PASS}@${PROXY}"; \ echo "use_proxy=on"; \ ) | tee /etc/wgetrc # python3 インストール WORKDIR /tmp/python3 RUN wget --no-check-certificate https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz && \ tar zxf Python-${PYTHON_VERSION}.tgz && \ rm Python-${PYTHON_VERSION}.tgz WORKDIR /tmp/python3/Python-${PYTHON_VERSION} RUN ./configure && make altinstall && make clean WORKDIR /usr/local/bin/ RUN touch python3 && \ ln -sf $(find -name python3.[0-9]) python3 && \ touch pip3 && \ ln -sf $(find -name pip3.[0-9]) pip3 RUN pip3 install --upgrade pip \ numpy # OpenCV3 インストール RUN apt update && \ apt install -y --no-install-recommends \ ca-certificates \ pkg-config \ libgtk2.0-dev \ libjpeg-dev libpng-dev \ ffmpeg \ libavcodec-dev \ libavformat-dev \ libavresample-dev \ libswscale-dev \ libv4l-dev \ libtbb2 \ libtbb-dev && \ apt clean && \ rm -rf /var/lib/apt/lists/* RUN mkdir -p /tmp/opencv WORKDIR /tmp/opencv RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ unzip ${OPENCV_VERSION}.zip -d . && \ mkdir /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ rm ${OPENCV_VERSION}.zip RUN wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ unzip opencv_contrib.zip && \ rm opencv_contrib.zip WORKDIR /tmp/opencv/opencv-${OPENCV_VERSION}/build/ RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv/opencv_contrib-${OPENCV_VERSION}/modules/ \ -D BUILD_TESTS=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ -D BUILD_PERF_TESTS=OFF \ -D WITH_FFMPEG=ON \ -D WITH_TBB=ON .. && \ make -j "$(nproc)" && \ make install && \ make clean WORKDIR /tmp
以上。
ffmpegで音声データと映像データを分離。動画の音量を調整する。
録音した動画の音声が小さいので
音声を抜き出して音を大きくして、再度映像と合成することにしました。
動画から映像と音声の抽出をffmpegを使って実行しました。
と思ったらgain調整が普通にできた!!ffmpegすごい。
ffmpegのインストール方法はこちらに記載してます。
kinacon.hatenablog.com
こちらの記事を参考にしました。
ffmpegで動画と音声を結合する方法 - 何気に大変
ffmpeg で音のボリュームを調整する。gain 調整 - それマグで!
実行環境
作業内容
映像を抽出する
ffmpeg -i 元ファイル -an -vcodec copy 映像ファイル
音声を抽出する
ffmpeg -i 元ファイル -vn -acodec copy 音声ファイル
合成する
ffmpeg -i 映像ファイル -vcodec copy \ -i 音声ファイル -acodec copy 結合ファイル
Gain調整する(動画)
音を大きくする
小さくする場合は-10dBとかにする。
ffmpeg -i 元ファイル -vcodec copy -af volume=10dB 出力ファイル
以上。
dockerfileでpython/opencv環境を構築する。
dockerにpython3.7とOpenCV3.4.3の環境を構築しました。
この環境をdockerfileで構築してみました。
作業環境
・Ubuntu18.04.1
・Docker-ce 18.06.1
作業内容
dockerfile
プロキシ設定が必要ない場合は設定部分を消してください。
FROM ubuntu:16.04 MAINTAINER kina <kina@kinacon.com> ARG PYTHON_VERSION=3.7.0 ARG OPENCV_VERSION=3.4.3 # プロキシ設定 ENV USER=xxxx \ PASS=xxxx \ PROXY=xxxx.xxxx.xxxx.co.jp:8080 # プロキシ設定(pip) ENV HTTP_PROXY=http://$USER:$PASS@$PROXY/ \ HTTPS_PROXY=http://$USER:$PASS@$PROXY/ # プロキシ設定(apt) RUN echo "Acquire::http::proxy ${USER}:${PASS}@${PROXY}/;" \ >> /etc/apt/apt.conf RUN apt update && \ apt install -y --no-install-recommends \ make \ cmake \ gcc \ g++ \ unzip \ wget \ build-essential \ zlib1g-dev \ libffi-dev \ libssl-dev && \ apt clean && \ rm -rf /var/lib/apt/lists/* # プロキシ設定(wget) RUN ( \ echo "https_proxy=http://${USER}:${PASS}@${PROXY}"; \ echo "use_proxy=on"; \ ) | tee /etc/wgetrc # python3 インストール WORKDIR /tmp/python3 RUN wget --no-check-certificate https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz && \ tar zxf Python-${PYTHON_VERSION}.tgz && \ rm Python-${PYTHON_VERSION}.tgz WORKDIR /tmp/python3/Python-${PYTHON_VERSION} RUN ./configure && make altinstall && make clean WORKDIR /usr/local/bin/ RUN ln -s /usr/local/bin/$(find -name python3.[0-9]) /bin/python3 RUN ln -s /usr/local/bin/$(find -name pip3.[0-9]) /bin/pip3 RUN pip3 install --upgrade pip \ numpy # OpenCV3 インストール RUN apt update && \ apt install -y --no-install-recommends \ ca-certificates \ pkg-config \ libgtk2.0-dev \ libjpeg-dev libpng-dev \ ffmpeg \ libavcodec-dev \ libavformat-dev \ libavresample-dev \ libswscale-dev \ libv4l-dev \ libtbb-dev && \ apt clean && \ rm -rf /var/lib/apt/lists/* RUN mkdir -p /tmp/opencv WORKDIR /tmp/opencv RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ unzip ${OPENCV_VERSION}.zip -d . && \ mkdir /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ rm ${OPENCV_VERSION}.zip WORKDIR /tmp/opencv/opencv-${OPENCV_VERSION}/build/ RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D BUILD_TESTS=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ -D BUILD_PERF_TESTS=OFF \ -D WITH_FFMPEG=ON \ -D WITH_TBB=ON .. && \ make -j "$(nproc)" && \ make install && \ make clean WORKDIR /tmp
dockerfile のビルド
dockerfileが置いてあるディレクトリで実行
イメージの名前は「py3/cv3」
docker build -t py3/cv3 .
pythonとOpenCVのバージョンは引数で指定できるようにしました。
・pythonのソースはここで確認。
https://www.python.org/ftp/python/
・OpenCVのソースはここで確認。
Releases - OpenCV library
例えば、python3.6.0 OpenCV3.2.0の場合は--build-argで引数を記載する
docker build --build-arg PYTHON_VERSION=3.6.0 --build-arg OPENCV_VERSION=3.2.0 -t py36/cv32 .
以上。
Ubuntu18.04でShotcutをインストールする
フリーの動画編集はopenshotを使用していたが、
Ubuntu18.04のPCのスペックが上がったので動画編集できるだろう。
ということで、簡単に導入できたShotcutを使用することにした。
作業環境
PC | Thinkpad T440s |
---|---|
CPU | Core i7 4600U |
メモリ | 12GB |
ドライブ | SSD 225GB |
GPU | GeForce GT 730M |
OS | Ubuntu18.04 |
作業内容
libsdl2-devをインストール
sudo apt install libsdl2-dev
snapでShotcutをインストール
sudo snap install shotcut --classic
めちゃ簡単。
実は、libsdl2-libをいれていなくてインストールできたけど
動かない・・・ってずっと諦めていたが
このサイトで解決できました。
www.admintome.com
以上。
DockerのコンテナでOpenCV(python)開発環境を構築する
前回、DockerのコンテナでOpenCV(C++)を実行できるようにしました。
今回はそのpython版です。
作業環境
・Ubuntu18.04.1
・Docker-ce 18.06.1
作業内容
OpenCVビルド用パッケージのインストール
docker container run -it --rm ubuntu:16.04 apt update apt install -y --no-install-recommends make cmake gcc g++ unzip wget build-essential zlib1g-dev libffi-dev libssl-dev apt clean
python3のインストール
ここにpythonのソースが置かれている。
現在の最新の安定版は「3.7.0」。「3.7.1」はまだRC版のようだ。
PYTHON_VERSION="3.7.0" wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz tar zxf Python-${PYTHON_VERSION}.tgz cd Python-${PYTHON_VERSION} ./configure make altinstall
リンクを作成
python3.7.0は/usr/local/binにある。
ln -s /usr/local/bin/python3.7 /bin/python3 ln -s /usr/local/bin/pip3.7 /bin/pip3
python3 を起動してみる。
python3
numpy, pillow(PIL)のインストール
インストールされているか確認
pip3 install --upgrade pip pip3 list
インストール
pip3 install numpy pillow
*******************************************************************
python3の環境ができたので、一旦イメージにcommitしておく。
・ctl+p、ctl+qでコンテナを起動させたまま抜ける
・docker container ls でコンテナのIDを確認
・docker container commit [コンテナID] [作成するイメージ名]
・docker image ls でイメージできたか確認
コンテナにはdocker container attach [コンテナID]で入ることができる。
********************************************************************
OpenCVのインストール
関連パッケージのインストール
apt update apt install --no-install-recommends -y build-essential cmake nano \ ca-certificates unzip wget \ pkg-config \ libgtk2.0-dev \ libjpeg-dev libpng-dev \ ffmpeg libavcodec-dev libavformat-dev libavresample-dev libswscale-dev \ libv4l-dev \ libtbb-dev apt clean
OpenCVのインストール
OPENCV_VERSION="3.4.3" mkdir -p /tmp/opencv && cd /tmp/opencv wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip unzip ${OPENCV_VERSION}.zip -d . mkdir /tmp/opencv/opencv-${OPENCV_VERSION}/build && cd /tmp/opencv/opencv-${OPENCV_VERSION}/build/ cmake -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D WITH_FFMPEG=ON -D WITH_TBB=ON .. | tee /tmp/opencv_cmake.log make -j "$(nproc)" | tee /tmp/opencv_build.log make install | tee /tmp/opencv_install.log
pythonでOpenCVのバージョン確認
python3 #python起動 import cv2 cv2.__version__
無事に環境構築ができたようです。
コンテナは消す前にcommitしましょう。
以上。