質問するログイン新規登録

回答編集履歴

3

微修正

2016/12/06 08:09

投稿

MasahikoHirata
MasahikoHirata

スコア3778

answer CHANGED
@@ -26,7 +26,7 @@
26
26
  // (3)動画ファイルから1フレーム分の画像データを取得して、変数frameに格納する
27
27
  cap >> frame;
28
28
 
29
- // 画像データ取得に失敗したらループを抜ける
29
+ // 画像データ取得を取得できたら書き込み。
30
30
  if (!frame.empty()){
31
31
  sprintf(filename,"img%d.jpg",filenumber++);
32
32
  cv::imwrite(filename,frame);

2

微修正

2016/12/06 08:09

投稿

MasahikoHirata
MasahikoHirata

スコア3778

answer CHANGED
@@ -30,10 +30,11 @@
30
30
  if (!frame.empty()){
31
31
  sprintf(filename,"img%d.jpg",filenumber++);
32
32
  cv::imwrite(filename,frame);
33
- // 取得した画像データをウィンドウ表示する
33
+ }
34
34
  if (cv::waitKey(30) >= 0) break;
35
35
  }
36
36
 
37
37
  return 0;
38
38
  }
39
- ```
39
+ ```
40
+ '}'を入れ忘れたので修正しました。

1

ソース追加

2016/12/06 08:08

投稿

MasahikoHirata
MasahikoHirata

スコア3778

answer CHANGED
@@ -1,1 +1,39 @@
1
- opencvではビデオカメラなどの動画からフレームとして静止画を取り出すことはできますよ。
1
+ opencvではビデオカメラなどの動画からフレームとして静止画を取り出すことはできますよ。
2
+
3
+ ```ここに言語を入力
4
+ #include <opencv2/core.hpp>
5
+ #include <opencv2/videoio.hpp> // videoioのヘッダーをインクルード
6
+ #include <opencv2/highgui.hpp> // highguiのヘッダーをインクルード
7
+ #include <iostream>
8
+
9
+ int main(int argc, const char* argv[])
10
+ {
11
+ char filename[80];
12
+ int filenumber;
13
+ // (1)動画ファイルを開くための準備を行う
14
+ cv::VideoCapture cap("videofile.avi");
15
+
16
+ // (2)動画ファイルが正しく開けているかをチェックする(正しく開けていなければエラー終了する)
17
+ if (!cap.isOpened())
18
+ return -1;
19
+
20
+
21
+ // 画像データを格納するための変数を宣言する
22
+ cv::Mat frame;
23
+ filenumber =1;
24
+ for (;;)
25
+ {
26
+ // (3)動画ファイルから1フレーム分の画像データを取得して、変数frameに格納する
27
+ cap >> frame;
28
+
29
+ // 画像データ取得に失敗したらループを抜ける
30
+ if (!frame.empty()){
31
+ sprintf(filename,"img%d.jpg",filenumber++);
32
+ cv::imwrite(filename,frame);
33
+ // 取得した画像データをウィンドウ表示する
34
+ if (cv::waitKey(30) >= 0) break;
35
+ }
36
+
37
+ return 0;
38
+ }
39
+ ```