概要
どうだろうか。
これを観た熱心なゴリラは、こう考えるだろう。
これを観た熱心なゴリラは、こう考えるだろう。
かんたんじゃん
解説
1つのフレームの中に、順々に遅れたフレームが存在している。
下から3ピクセルは今のフレーム
その上の3ピクセルは1フレーム前のフレーム
さらにその上の3ピクセルは2フレーム前のフレーム
……
実装
int main() { string filename = "video/a.mp4"; VideoCapture capture; //// カメラから入力する // capture.open(0); // ファイルから入力する capture.open(filename); Mat capturedImage; // 最初のフレームを取得 capture >> capturedImage; // フレームの大きさを調べる int width = capturedImage.cols; int height = capturedImage.rows; cout << width << "x" << height << endl; // スリットの高さ int slitHeight = 3; // 画面をいくつのスリットに分割するか int slitCount = height / slitHeight; // スリットごとの画像 vector<Mat>slitImages; // メインループ while (true) { // 次のフレームを取得 capture >> capturedImage; if (capturedImage.empty()) break; // スリットの画像をずらす slitImages.push_back(capturedImage.clone()); for (int c = 0; c < slitImages.size()-1; c++) slitImages[c] = slitImages[c+1]; if (slitImages.size() > slitCount) { slitImages.pop_back(); } // スリットごとに画像をコピー for (int c = 0; c < slitImages.size(); c++) { Rect slit(0, slitHeight*c, width, slitHeight); Mat(slitImages[c], slit).copyTo(Mat(capturedImage, slit)); } // 表示 imshow("out", capturedImage); // なにかキーが押されたら終了 if (waitKey(10) != -1) break; } return 0; }
出力結果
動画はNHKのを使う。オリジナルはこれだ。
んで、変換後はこれだ。
0 件のコメント:
コメントを投稿