回答編集履歴

3

微修正

2016/12/06 08:09

投稿

MasahikoHirata
MasahikoHirata

スコア3747

test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
 
56
56
 
57
- // 画像データ取得に失敗したらループを抜ける
57
+ // 画像データ取得を取得できたら書き込み。
58
58
 
59
59
  if (!frame.empty()){
60
60
 

2

微修正

2016/12/06 08:09

投稿

MasahikoHirata
MasahikoHirata

スコア3747

test CHANGED
@@ -62,7 +62,7 @@
62
62
 
63
63
  cv::imwrite(filename,frame);
64
64
 
65
- // 取得した画像データをウィンドウ表示する
65
+ }
66
66
 
67
67
  if (cv::waitKey(30) >= 0) break;
68
68
 
@@ -75,3 +75,5 @@
75
75
  }
76
76
 
77
77
  ```
78
+
79
+ '}'を入れ忘れたので修正しました。

1

ソース追加

2016/12/06 08:08

投稿

MasahikoHirata
MasahikoHirata

スコア3747

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