opencvではビデオカメラなどの動画からフレームとして静止画を取り出すことはできますよ。
例
#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp> // videoioのヘッダーをインクルード
#include <opencv2/highgui.hpp> // highguiのヘッダーをインクルード
#include <iostream>
int main(int argc, const char* argv[])
{
char filename[80];
int filenumber;
// (1)動画ファイルを開くための準備を行う
cv::VideoCapture cap("videofile.avi");
// (2)動画ファイルが正しく開けているかをチェックする(正しく開けていなければエラー終了する)
if (!cap.isOpened())
return -1;
// 画像データを格納するための変数を宣言する
cv::Mat frame;
filenumber =1;
for (;;)
{
// (3)動画ファイルから1フレーム分の画像データを取得して、変数frameに格納する
cap >> frame;
// 画像データ取得を取得できたら書き込み。
if (!frame.empty()){
sprintf(filename,"img%d.jpg",filenumber++);
cv::imwrite(filename,frame);
}
if (cv::waitKey(30) >= 0) break;
}
return 0;
}
'}'を入れ忘れたので修正しました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。