回答編集履歴
4
追記
test
CHANGED
@@ -39,8 +39,6 @@
|
|
39
39
|
修正版サンプルコードを参考情報として置いておきます。
|
40
40
|
|
41
41
|
どういう点を修正したのかをコードの差分比較ツールで確認して見てくださいな。
|
42
|
-
|
43
|
-
**ノークレーム・ノーリターンでお願いします。**
|
44
42
|
|
45
43
|
|
46
44
|
|
@@ -102,7 +100,7 @@
|
|
102
100
|
|
103
101
|
end_flag, self.frame = self.video.read()
|
104
102
|
|
105
|
-
if not end_flag:
|
103
|
+
if not end_flag: # EOF
|
106
104
|
|
107
105
|
break
|
108
106
|
|
@@ -137,8 +135,6 @@
|
|
137
135
|
|
138
136
|
|
139
137
|
def onMouse(self,event, x, y, flag, params):
|
140
|
-
|
141
|
-
|
142
138
|
|
143
139
|
if event == cv2.EVENT_MOUSEMOVE: # マウスが移動したときにx線とy線を更新する
|
144
140
|
|
3
追記
test
CHANGED
@@ -57,6 +57,12 @@
|
|
57
57
|
|
58
58
|
|
59
59
|
VIDEO_DATE = 'tennis.AVI'
|
60
|
+
|
61
|
+
WINDOW_NAME = "MouseEvent"
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
|
60
66
|
|
61
67
|
class PointList():
|
62
68
|
|
2
追記
test
CHANGED
@@ -58,10 +58,6 @@
|
|
58
58
|
|
59
59
|
VIDEO_DATE = 'tennis.AVI'
|
60
60
|
|
61
|
-
WINDOW_NAME = "MouseEvent"
|
62
|
-
|
63
|
-
|
64
|
-
|
65
61
|
class PointList():
|
66
62
|
|
67
63
|
def __init__(self, npoints):
|
@@ -100,13 +96,31 @@
|
|
100
96
|
|
101
97
|
end_flag, self.frame = self.video.read()
|
102
98
|
|
103
|
-
if not end_flag:
|
99
|
+
if not end_flag:
|
104
100
|
|
105
101
|
break
|
106
102
|
|
107
|
-
|
103
|
+
if(self.pos == self.npoints):
|
108
104
|
|
105
|
+
# コメントアウト
|
106
|
+
|
107
|
+
#print(self.ptlist)
|
108
|
+
|
109
|
+
cv2.line(self.frame, (self.ptlist[0][0], self.ptlist[0][1]),
|
110
|
+
|
111
|
+
(self.ptlist[1][0], self.ptlist[1][1]), (0, 255, 0), 3)
|
112
|
+
|
113
|
+
cv2.line(self.frame, (self.ptlist[1][0], self.ptlist[1][1]),
|
114
|
+
|
115
|
+
(self.ptlist[2][0], self.ptlist[2][1]), (0, 255, 0), 3)
|
116
|
+
|
109
|
-
|
117
|
+
cv2.line(self.frame, (self.ptlist[2][0], self.ptlist[2][1]),
|
118
|
+
|
119
|
+
(self.ptlist[3][0], self.ptlist[3][1]), (0, 255, 0), 3)
|
120
|
+
|
121
|
+
cv2.line(self.frame, (self.ptlist[3][0], self.ptlist[3][1]),
|
122
|
+
|
123
|
+
(self.ptlist[0][0], self.ptlist[0][1]), (0, 255, 0), 3)
|
110
124
|
|
111
125
|
cv2.imshow(WINDOW_NAME, self.frame)
|
112
126
|
|
@@ -148,30 +162,6 @@
|
|
148
162
|
|
149
163
|
print('All points have selected. Press ESC-key.')
|
150
164
|
|
151
|
-
if(self.pos == self.npoints):
|
152
|
-
|
153
|
-
print(self.ptlist)
|
154
|
-
|
155
|
-
# ↓はrangeとfor文を使えば4行から減らせると思います。
|
156
|
-
|
157
|
-
cv2.line(self.frame, (self.ptlist[0][0], self.ptlist[0][1]),
|
158
|
-
|
159
|
-
(self.ptlist[1][0], self.ptlist[1][1]), (0, 255, 0), 3)
|
160
|
-
|
161
|
-
cv2.line(self.frame, (self.ptlist[1][0], self.ptlist[1][1]),
|
162
|
-
|
163
|
-
(self.ptlist[2][0], self.ptlist[2][1]), (0, 255, 0), 3)
|
164
|
-
|
165
|
-
cv2.line(self.frame, (self.ptlist[2][0], self.ptlist[2][1]),
|
166
|
-
|
167
|
-
(self.ptlist[3][0], self.ptlist[3][1]), (0, 255, 0), 3)
|
168
|
-
|
169
|
-
cv2.line(self.frame, (self.ptlist[3][0], self.ptlist[3][1]),
|
170
|
-
|
171
|
-
(self.ptlist[0][0], self.ptlist[0][1]), (0, 255, 0), 3)
|
172
|
-
|
173
|
-
# この部分にcv2.imshowがいるような気も。
|
174
|
-
|
175
165
|
|
176
166
|
|
177
167
|
|
1
追記
test
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
質問文の追記ありがとございます。
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
---
|
2
6
|
|
3
7
|
|
4
8
|
|
@@ -22,17 +26,21 @@
|
|
22
26
|
|
23
27
|
```
|
24
28
|
|
25
|
-
実行時エラーを無くすには上記コードに変更すれば良いですが。
|
29
|
+
実行時エラーを無くすには関連する部分を上記コードに変更すれば良いのですが。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
---
|
34
|
+
|
35
|
+
|
26
36
|
|
27
37
|
質問タイトルのやりたい事はこれでは満たせないので、
|
28
38
|
|
29
|
-
修正版
|
39
|
+
修正版サンプルコードを参考情報として置いておきます。
|
30
40
|
|
31
|
-
コードの差分比較ツール
|
41
|
+
どういう点を修正したのかをコードの差分比較ツールで確認して見てくださいな。
|
32
42
|
|
33
43
|
**ノークレーム・ノーリターンでお願いします。**
|
34
|
-
|
35
|
-
|
36
44
|
|
37
45
|
|
38
46
|
|
@@ -48,7 +56,7 @@
|
|
48
56
|
|
49
57
|
|
50
58
|
|
51
|
-
VIDEO_DATE = '
|
59
|
+
VIDEO_DATE = 'tennis.AVI'
|
52
60
|
|
53
61
|
WINDOW_NAME = "MouseEvent"
|
54
62
|
|
@@ -92,9 +100,13 @@
|
|
92
100
|
|
93
101
|
end_flag, self.frame = self.video.read()
|
94
102
|
|
95
|
-
if not end_flag:
|
103
|
+
if not end_flag: # 動画が終わったら
|
96
104
|
|
97
105
|
break
|
106
|
+
|
107
|
+
# 質問文のコードを踏襲するために、onMouseでcv2.imshowとしましたが、
|
108
|
+
|
109
|
+
# ベストなコードはこの位置にマウスの座標データを元にしてcv2.circleとcv2.lineを行う事です。
|
98
110
|
|
99
111
|
cv2.imshow(WINDOW_NAME, self.frame)
|
100
112
|
|