質問編集履歴
1
インデントを追加したコードに編集しました。よろしくお願いいたします。
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
実行自体は上手く行くのですが、動画のフレーム数を全て画像として抽出してしまうので、長い動画を読み込んだ際には必要以上に画像が生成されてしまいます(例えば、1000のフレームで構成された動画を読み込むと必要な写真は100枚にもかかわらず1000枚生成されてしまいます)。
|
3
3
|
そこで、生成する画像の枚数を制限したいのですがどのようにコードを書き換えればよいかわかりません。どうかご教示ください。
|
4
4
|
|
5
|
-
from google.colab import drive
|
5
|
+
```from google.colab import drive
|
6
6
|
drive.mount('/content/drive')
|
7
7
|
from google.colab.patches import cv2_imshow
|
8
8
|
import paddlehub as hub
|
@@ -15,15 +15,11 @@
|
|
15
15
|
module = hub.Module(name="pyramidbox_lite_server_mask", version='1.1.0')
|
16
16
|
|
17
17
|
def paint_chinese(im, chinese, position, fontsize, color_bgr):
|
18
|
-
|
19
18
|
img_PIL = Image.fromarray(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))
|
20
19
|
font = ImageFont.truetype(
|
21
20
|
'SourceHanSansSC-Medium.otf', fontsize, encoding="utf-8")
|
22
|
-
|
23
|
-
|
24
21
|
color = color_bgr[::-1]
|
25
22
|
draw = ImageDraw.Draw(img_PIL)
|
26
|
-
|
27
23
|
draw.text(position, chinese, font=font, fill=color)
|
28
24
|
img = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR)
|
29
25
|
return img
|
@@ -67,7 +63,6 @@
|
|
67
63
|
result['data']['right']), int(result['data']['bottom']), int(
|
68
64
|
result['data']['left'])
|
69
65
|
|
70
|
-
|
71
66
|
img_name = "avatar_%d.png" % (maskIndex)
|
72
67
|
path = "/content/drive/My Drive/Face/A_face/" + img_name
|
73
68
|
image = frame[top - 10:bottom + 10, left - 10:right + 10]
|
@@ -94,14 +89,10 @@
|
|
94
89
|
|
95
90
|
cv2.rectangle(frame_copy, (left, top), (right, bottom), color, 3)
|
96
91
|
cv2.putText(frame_copy, label, (left, top-10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, color, 2)
|
97
|
-
|
98
92
|
|
99
93
|
writer.write(frame_copy)
|
100
94
|
|
101
|
-
|
102
|
-
|
103
95
|
frameData['frame'] = index
|
104
|
-
|
105
96
|
frameData['data'] = maskFrameDatas
|
106
97
|
|
107
98
|
data.append(frameData)
|
@@ -117,4 +108,11 @@
|
|
117
108
|
|
118
109
|
writer.release()
|
119
110
|
|
120
|
-
cv2.destroyAllWindows()
|
111
|
+
cv2.destroyAllWindows()
|
112
|
+
|
113
|
+
```
|
114
|
+
|
115
|
+
個人的にチャレンジしてみたことはindex,maskindex,fpsなどの値を変えてみたことです。frameData['frame']=index
|
116
|
+
などと書かれているので、indexの値を制限すれば取得するframe数も制限されると考えました。
|
117
|
+
ちなみにこのコードは以下のサイトから引用させていただきました。
|
118
|
+
(https://qiita.com/ebiflyyyyyyyy/items/4f8cc781a86c3f9d8700)
|