1. PonDad

    Posted

    PonDad
Changes in title
+Python3+OpenCV3.1+ffmpegで動画を読み込む(Ubuntu16.04)
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,88 @@
+MacにデュアルブートしたUbuntu16.04にOpenCV3.1をインストールした際の覚書です。
+
+## 環境
+
+- Ubuntu16.04
+- Python 3.5.2
+
+UbuntuはiMacにデュアルブートしたものです。Python3系は`pyenv`を使わずに`sudo apt-get install python3-pip python3-dev`でインストールしました。
+
+## ffmpegをOpenCVで使うには
+
+OpenCVのインストールは`anaconda`を使うと楽に出来ると思ったのですが、動画ファイル(`mp4`や`avi`など)の読み込みに対応していません。
+
+どうも展開する際、自分でビルドしなければならない様です。参考になったリンクを貼っておきます。
+
+[OpenCV 3.1 Installation Guide on Ubuntu 16.04 - GitHub](https://github.com/BVLC/caffe/wiki/OpenCV-3.1-Installation-Guide-on-Ubuntu-16.04)
+
+こちらをそのまま利用できました。
+
+```bash
+$ sudo apt-get install --assume-yes build-essential cmake git
+$ sudo apt-get install --assume-yes build-essential pkg-config unzip ffmpeg qtbase5-dev python-dev python3-dev python-numpy python3-numpy
+$ sudo apt-get install --assume-yes libopencv-dev libgtk-3-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev
+$ sudo apt-get install --assume-yes libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
+$ sudo apt-get install --assume-yes libv4l-dev libtbb-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev
+$ sudo apt-get install --assume-yes libvorbis-dev libxvidcore-dev v4l-utils
+```
+
+ 公式のレポジトリからダウンロードしたものはCUDAのサポートもされている様です。
+
+```bash
+$ git clone https://github.com/opencv/opencv.git
+$ cd opencv
+```
+
+ダウンロード後、以下の指定をしてビルドします。
+
+```bash
+$ mkdir build
+$ cd build/
+$ 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_CUBLAS=ON -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..
+$ make -j $(($(nproc) + 1))
+```
+展開してインストールします。
+
+```bash
+$ sudo make install
+$ sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
+$ sudo ldconfig
+$ sudo apt-get update
+```
+
+ビルドは1時間半位は見ておいたほうがいいですね。
+
+## 動画の読み込み
+
+これで動画が読み込めるようになりました。[公式ドキュメンテーション](http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_video_display/py_video_display.html)のサンプルコードを試してみます。
+
+```python
+import numpy as np
+import cv2
+
+cap = cv2.VideoCapture('street.mp4')
+
+while(cap.isOpened()):
+ ret, frame = cap.read()
+
+ gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
+
+ cv2.imshow('frame',gray)
+ if cv2.waitKey(1) & 0xFF == ord('q'):
+ break
+
+cap.release()
+cv2.destroyAllWindows()
+
+```
+[フリーストック動画サイト](https://videos.pexels.com/)よりダウンロードした画像を白黒で表示してみます。
+
+![Screenshot from 2017-02-12 19-17-28.png](https://qiita-image-store.s3.amazonaws.com/0/47128/ea86ed2f-c40e-bc7f-e40f-e54773e76c2b.png)
+
+上手く行きました。
+
+
+