回答編集履歴

1

ソース添付

2016/12/13 10:24

投稿

MasahikoHirata
MasahikoHirata

スコア3747

test CHANGED
@@ -1 +1,99 @@
1
1
  `waitKey(30)`毎に時間を消費しています。まず`int key;`とか適当な変数を定義して、一回だけ`key=waitKey(1)`として入力。その後に各`if`に渡されては如何ですか?ex`if( key == 'q')`など。それと入力とキーを比較するのであれば`>=`ではなくて`==`と考えますが。
2
+
3
+ 簡単なソースを添付します。
4
+
5
+ ```C++
6
+
7
+ int main()
8
+
9
+ {
10
+
11
+ int key;
12
+
13
+ namedWindow("test", WINDOW_AUTOSIZE);
14
+
15
+ Mat frame;
16
+
17
+ VideoCapture video("abc.mp4");
18
+
19
+
20
+
21
+ for (int i = 0; i < max_frame; i++) {
22
+
23
+ video >> frame; //1フレーム分取り出してimgに保持させる
24
+
25
+ imshow("test", frame);
26
+
27
+ key = waitKey(1);//表示のために1ms待つ
28
+
29
+ if (key == 'q')
30
+
31
+ {
32
+
33
+ video.set(CV_CAP_PROP_POS_FRAMES, 100);
34
+
35
+ }
36
+
37
+ if (key == 'w')
38
+
39
+ {
40
+
41
+ video.set(CV_CAP_PROP_POS_FRAMES, 200);
42
+
43
+ }
44
+
45
+ if (key == 'e')
46
+
47
+ {
48
+
49
+ video.set(CV_CAP_PROP_POS_FRAMES, 300);
50
+
51
+ }
52
+
53
+ if (key == 'r')
54
+
55
+ {
56
+
57
+ video.set(CV_CAP_PROP_POS_FRAMES, 400);
58
+
59
+ }
60
+
61
+ if (key == 't')
62
+
63
+ {
64
+
65
+ video.set(CV_CAP_PROP_POS_FRAMES, 500);
66
+
67
+ }
68
+
69
+ if (key == 'y')
70
+
71
+ {
72
+
73
+ video.set(CV_CAP_PROP_POS_FRAMES, 600);
74
+
75
+ }
76
+
77
+ if (key == 'u')
78
+
79
+ {
80
+
81
+ video.set(CV_CAP_PROP_POS_FRAMES, 700);
82
+
83
+ }
84
+
85
+ if (key == 'i')
86
+
87
+ {
88
+
89
+ video.set(CV_CAP_PROP_POS_FRAMES, 800);
90
+
91
+ }
92
+
93
+ }
94
+
95
+ }
96
+
97
+ ```
98
+
99
+ 机上ですので、後は任意にご変更の事。