avidemux를 Ubuntu14.04에 설치하고 동영상 편집

동영상에서 이미지를 수집하는 프로그램을 실행했습니다.
동영상이 길면 많은 양의 이미지가 생성됩니다.
동영상 편집에 오픈 소스 avidemux를 사용해 보았습니다.

환경은 우분투14.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를 선택하고 시작해도 좋다.


기계 학습용으로 훈련용 데이터를 수집하고 싶을 때 등
동영상 편집 할 수 있으면 편리합니다.
적극적으로 OSS 툴을 활용하고 싶은 곳이군요.
OpenCV에서 제공하는 얼굴 분류기는 다음과 같습니다.
얼굴 잘라내기 코드의 캐스케이드 분류기 xml 파일의 부분을 다시 쓰는 것으로 인식하고 싶은 대상을 변경할 수 있습니다.

얼굴 검출용 캐스케이드 분류기


haarcascade_frontalface_default.xml
haarcascade_frontalface_alt.xml
haarcascade_frontalface_alt2.xml
haarcascade_frontalface_alt_tree.xml
haarcascade_profileface.xml

애니메이션 얼굴 검출의 경우



천재에 의해 작성된 애니메이션 얼굴 검출용의 분류기입니다.
//名前 lbpcascade_animeface.xml 
//使い方:
 face_cascade.load("lbpcascade_animeface.xml");

얼굴 잘라내기 코드



* 잘라내기 코드나 컴파일 방법 등 자세한 내용은 어둠에 흩날린 천재, kivantium 님의 페이지을 참조하십시오.
#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 님의 페이지
애니메이션 얼굴 캐스케이드 분류기를 만든 사람
OpenCV의 분류기에 대해서는 이쪽
저작권 정보 센터
avidemux 참고

좋은 웹페이지 즐겨찾기