Ubuntu 16.04 LTS OpenCV (Error “sys/videoio.h - not found” OpenCV 3.1.0)

参考URL

こちら

Prepare build

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install wget unzip

sudo apt-get install build-essential cmake pkg-config

sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

sudo apt-get install libgtk-3-dev

sudo apt-get install libatlas-base-dev gfortran

sudo apt-get install python2.7-dev python3.5-dev

Download OpenCV

cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip

wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
unzip opencv_contrib.zip

cd ~
wget https://bootstrap.pypa.io/get-pip.py

Setup Python environment

sudo python get-pip.py
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.bashrc
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc

source ~/.bashrc

mkvirtualenv cv -p python2
OR
mkvirtualenv cv -p python3

workon cv

pip install numpy

Build OpenCV

workon cv
cd ~/opencv-3.1.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
    -D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
    -D BUILD_EXAMPLES=ON ..
make -j4

INSTALL_C_EXAMPLES=ON の場合

sudo apt-get install qt5-default qttools5-dev-tools

cmake \
  -D CMAKE_BUILD_TYPE=RELEASE \
  -D CMAKE_INSTALL_PREFIX=/usr/local \
  -D WITH_TBB=ON \
  -D WITH_V4L=ON \
  -D WITH_QT=ON \
  -D WITH_OPENGL=ON \
  -D WITH_CUDA=ON \
  -D ENABLE_FAST_MATH=1 \
  -D CUDA_FAST_MATH=1 \
  -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" \
  -D WITH_CUBLAS=1 \
  -D INSTALL_C_EXAMPLES=ON \
  -D INSTALL_PYTHON_EXAMPLES=ON \
  -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.1.0/modules \
  -D BUILD_TESTS=OFF \
  -D BUILD_PERF_TESTS=OFF \
  -D BUILD_OPENCV_PYTHON3=1 \
  -D PYTHON3_EXECUTABLE=$(which python3) \
  -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
  -D PYTHON3_LIBRARIES=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..
make -j4

Error “sys/videoio.h - not found” OpenCV 3.1.0

根本原因までは不明ながら、以下のパッケージ更新により、対処可能。

sudo -i
mkdir /usr/include/ffmpeg
cd /usr/include/ffmpeg
ln -sf /usr/include/x86_64-linux-gnu/libavcodec/*.h ./
ln -sf /usr/include/x86_64-linux-gnu/libavformat/*.h ./
ln -sf /usr/include/x86_64-linux-gnu/libswscale/*.h ./
exit (sudo 終了)

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50

以下、cmake, make は前出の通り。

Install OpenCV

sudo make install
sudo ldconfig

Ubuntu 16.04 LTS のSamba、旧LMも有効に

Samba の導入

sudo apt-get install samba
sudo apt-get install cifs-utils

smb.conf の編集

参考サイト

旧タイプの共有フォルダにアクセスできるようにする。

/etc/samba/smb.confの[global]セクションに以下を追加。

client NTLMv2 auth = No
sudo service smbd restart

Ubuntu 16.04 LTS で市販DVDの再生

暗号化解除ライブラリとDVD再生ソフトの導入

sudo apt install ubuntu-restricted-extras
sudo apt install libdvd-pkg
sudo dpkg-reconfigure libdvd-pkg
sudo apt install handbrake
sudo apt install vlc
sudo apt install ffmpeg
sudo apt install ffmpeg-doc

Ubuntu 16.04 LTS 日本語 Remix のインストール後に毎回行う作業

言語設定(必要に応じて)

System Setting -> Language Support 日本語を英語の次にする。 (このときLanguage Packがインストールされるので、言語変更後にリブートしておく。)

言語設定のが日本語の場合、ホームディレクトリ以下の名前は英語にしておく。

LANG=C xdg-user-dirs-gtk-update

ログアウト、ログイン後にフォルダ名の変更を尋ねるダイアログが表示されるので、Updateを選択する。

Chrome のインストー

sudo apt-get install libappindicator1

Chrome Download

sudo dpkg -i ダウンロードしたインストーラ名.deb
google-chrome

Unity 関連

sudo apt install compizconfig-settings-manager
sudo apt-get install unity-tweak-tool gnome-tweak-tool
  • Ctrl <-> Caps /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps" 
BACKSPACE="guess"

Grub2

/etc/default/grub

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
sudo update-grub

GMT to Local Time

timedatectl set-local-rtc 1

アップデートの適用

About This Computer -> Checking for Updates 作業後に再びリブートする。 (ここでアップデートしないと、次の作業でエラーが発生する。)

Mozcの導入

言語を英語にするとMozcが入力ソースから外れるので、右上のキーボードアイコンの Configure Current Input Method でMozcを再度追加する。 Only show current language のチェックをはずすしてMozcを選択対象に表示させる。

Windowsからのリモートデスクトップ接続を有効にする

以下の内容のスクリプトを実行する。

#!/bin/sh

# Refresh repository.
sudo apt update -y

# Install git and devscript.
#sudo apt install -y git devscript
sudo apt install -y git

# Remove vnc4server.
sudo apt remove -y vnc4server

# Create working directory.
mkdir tigervnc
cd tigervnc

# Download source code.
git clone https://github.com/TigerVNC/tigervnc
cd tigervnc/

# Avoid compiler error.
#git checkout ff872614b507d0aa8bfbd09ef41550390cfe658a
git checkout 044e2b87da7121ef6cbd59e88b101d7d8e282896 -b 044e2b87da7121ef6cbd59e88b101d7d8e282896

# Prepare to build package.
#ln -s contrib/packages/deb/ubuntu-xenial/debian
#chmod a+x debian/rules
#sudo apt install -y -o 'apt::install-recommends=true' `dpkg-checkbuilddeps 2>&1 | sed -e 's/.*build dependencies://g' -e 's/([^)]*)//g'`
ln -s contrib/packages/deb/ubuntu-xenial/debian
sudo apt install -y $(grep Build-Depends: debian/control | sed -e 's/Build-Depends://g' -e 's/([^\)]*)//g' -e 's/,//g')

# Build package.
chmod a+x debian/rules
fakeroot debian/rules binary

# Install package with resolving dependent package.
cd ..
sudo dpkg -i *.deb || (sudo apt-get -f install -y ; sudo dpkg -i *.deb || exit 1)
cd ..

# Set up .xsession file
cat <<++ > ~/.xsession
/usr/lib/gnome-session/gnome-session-binary --session=ubuntu &
/usr/lib/x86_64-linux-gnu/unity/unity-panel-service &
/usr/lib/unity-settings-daemon/unity-settings-daemon &

for indicator in /usr/lib/x86_64-linux-gnu/indicator-*; do
  basename=\`basename \${indicator}\`
  dirname=\`dirname \${indicator}\`
  service=\${dirname}/\${basename}/\${basename}-service
  \${service} &
done

unity
++

sudo ln -s /usr/bin/unity-control-center /usr/bin/gnome-control-center

sudo apt install -y xrdp
sudo systemctl enable xrdp
sudo systemctl restart xrdp

vncpasswd の実行

vncpasswd 
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

Deskshare も念の為実行

DashからDeskshareを起動、設定する。

Linux用ウィスルソフト(念の為)

“Antivirus for Linux - Sophos”