Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

上手く行きました。

PonDad
人工知能愛好家(Artificial Intelligence Hobbyist)
https://pondad.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした