LoginSignup
33
25

More than 5 years have passed since last update.

Python3+OpenCV3.1+ffmpegで動画を読み込む(Ubuntu16.04)

Last updated at Posted at 2017-02-12

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を使うと楽に出来ると思ったのですが、動画ファイル(mp4aviなど)の読み込みに対応していません。

どうも展開する際、自分でビルドしなければならない様です。参考になったリンクを貼っておきます。

OpenCV 3.1 Installation Guide on Ubuntu 16.04 - GitHub

こちらをそのまま利用できました。

$ 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のサポートもされている様です。

$ git clone https://github.com/opencv/opencv.git
$ cd opencv

ダウンロード後、以下の指定をしてビルドします。

$ 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))

展開してインストールします。

$ 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時間半位は見ておいたほうがいいですね。

動画の読み込み

これで動画が読み込めるようになりました。公式ドキュメンテーションのサンプルコードを試してみます。

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()

フリーストック動画サイトよりダウンロードした画像を白黒で表示してみます。

Screenshot from 2017-02-12 19-17-28.png

上手く行きました。

33
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
25