avidemuxをUbuntu14.04にインストールして動画編集


動画から画像を収集するプログラムを実行していましたが
動画が長いと多量の画像が生成されてしまうため
動画編集にオープンソースのavidemuxを使ってみました

環境はubuntu14.04
###インストール手順
```
レポジトリの登録
sudo add-apt-repository　ppa:rebuntu16/avidemux+unofficial

パッケージアップデート
sudo apt-get update

インストール
sudo apt-get install avidemux2.6-gtk avidemux2.6-qt4
```
Ubuntuのアプリケーションメニューで起動できます。
動画ファイルを指定して右クリックから
一度avidemuxを選んで起動してもよし。
![avidemux.png](https://qiita-image-store.s3.amazonaws.com/0/104856/fe6cde4f-5ad0-47c1-0720-3bf45ecf6d66.png)

機械学習用に訓練用データを収集したい時など
動画編集出来ると便利です。
積極的にOSSツールを活用したい所ですね。
OpenCVから提供されている顔分類器は下記の通り。
顔切り出しコードのカスケード分類器xmlファイルの部分を書き換える事で認識したい対象を変更できます。



###顔検出用　カスケード分類器
    haarcascade_frontalface_default.xml
    haarcascade_frontalface_alt.xml
    haarcascade_frontalface_alt2.xml
    haarcascade_frontalface_alt_tree.xml
    haarcascade_profileface.xml

###アニメ顔検出の場合
天才により作成されたアニメ顔検出用の分類器です。

```cpp
//名前 lbpcascade_animeface.xml　
//使い方:
 face_cascade.load("lbpcascade_animeface.xml");
```
###顔切り出しコード
*切り出しコードやコンパイル方法等詳細は闇に舞い降りた天才、[kivantiumさんのページ](http://kivantium.hateblo.jp/entry/2014/11/25/230658)を参照してください。
>```cpp
>#include <opencv2/opencv.hpp>
>#include <string>
>#include <sstream>
>#include <iomanip>
>
>using namespace std;
>using namespace cv;
>
>void detectAndDisplay(Mat image);
>
>CascadeClassifier face_cascade;
>
>int imagenum = 0;
>
>int main(int argc, char* argv[]){
>    int framenum = 0;
>
>    //カスケードのロード
>    >face_cascade.load("lbpcascade_animeface.xml");
>
>    //動画の読み込み
>    Mat frame;
>    VideoCapture video("video");
>    if(!video.isOpened()){
>        cout << "Video not found!" << endl;
>        return -1;
>    }
>
>    for(;;){
>        framenum++;
>        video >> frame;
>        if (frame.empty()) {
>            cout << "End of video" << endl;
>            break;
>        };
>        //全フレーム切りだすと画像数が増え過ぎるの>で10フレームごとに検出
>        if(framenum%10==0) >detectAndDisplay(frame);
>    }
>    return 0;
>}
>
>//認識と表示を行う関数
>void detectAndDisplay(Mat image)
>{
>    vector<Rect> faces;
>    Mat frame_gray;
>    stringstream name;
>
>    //画像のグレースケール化
>    cvtColor(image, frame_gray, >COLOR_BGR2GRAY );
>    //ヒストグラムの平坦化
>    equalizeHist(frame_gray, frame_gray);
>    //顔の認識　小さい顔は除外
>    face_cascade.detectMultiScale(frame_gray, >faces, 1.1, 3, 0, Size(80,80));
>    for(int i = 0; i<faces.size(); i++){
>        //顔部分に注目したMatをROIで作る
>        Mat Face = image(Rect(faces[i].x, >faces[i].y,faces[i].width, faces[i].height));
>        //連番のファイル名を作る。参考：http://www.geocities.jp/eneces_jupiter_jp/cpp1/013-001.html
>        name.str("");
>        name << "image" << setw(3) << >setfill('0') << imagenum << ".png";
>        imwrite(name.str(), Face);
>        imagenum++;
>    }
>}
>
>```

ちなみに開発で使用する動画の著作権については
情報解析の為であれば著作権法第47条の7に該当し自由に使える範疇になります。
OpenCVを用いた画像認識手法の開発は
情報解析に該当する筈ですから
皆さん、法律を守って面白いものをガンガン開発しましょう。

>情報解析のための複製（著作権法第47条の7）
>コンピュータを使った情報解析のために、必要と認めら
>れる限度において、著作物を複製することができる。

*しかしながらその後ogv形式のファイルが開けなかったりしたので
　openshotという動画編集ソフトを入れてみました。
　ogvは問題なく開けたのでしばらく使ってみます。

```
sudo add-apt-repository ppa:openshot.developers/ppa
sudo apt-get update
sudo apt-get install openshot
```

参考ページ：
[kivantiumさんのページ](http://kivantium.hateblo.jp/entry/2014/11/25/230658)
[アニメ顔カスケード分類器を作成された方](http://ultraist.hatenablog.com/entry/20110718/1310965532)
[OpenCVの分類器についてはこちら](http://qiita.com/shu223/items/ffd2202eaf92d342f83d)
[著作権情報センター](http://www.cric.or.jp/qa/hajime/hajime7.html "タイトル") 
[avidemux参考](http://ubuntuhandbook.org/index.php/2014/04/install-the-latest-avidemux-2-6-8-in-ubuntu-14-04-lts/)