描述:將一個視頻流按幀數截取大量的圖片
用途:AI的數據集制作,得到大量的圖片,之后將其打標簽
更改的地方
1.default--間隔的幀數? ?2.input/output--輸入視頻的路徑、存放截取圖片的路徑 (將路徑放入后面的‘ ’中即可)前面加r可表示絕對路徑 eg:
1
args = parser.parse_args([
'
--input
'
,r
'
F:\data_video\IMG_4395.MOV
'
,
'
--output
'
,r
'
F:data_rgb_pic\7video
'
])
直接上代碼
1
import
cv2
2
import
argparse
3
import
os
4
def
parse_args():
5
"""
6
Parse input arguments
7
"""
8
parser = argparse.ArgumentParser(description=
'
Process pic
'
)
9
parser.add_argument(
'
--input
'
, help=
'
video to process
'
, dest=
'
input
'
, default=None, type=
str)
10
parser.add_argument(
'
--output
'
, help=
'
pic to store
'
, dest=
'
output
'
, default=None, type=
str)
11
#
default為間隔多少幀截取一張圖片
12
parser.add_argument(
'
--skip_frame
'
, dest=
'
skip_frame
'
, help=
'
skip number of video
'
, default=100, type=
int)
13
#
input為輸入視頻的路徑 ,output為輸出存放圖片的路徑
14
args = parser.parse_args([
'
--input
'
,
''
,
'
--output
'
,
''
])
15
return
args
16
17
def
process_video(i_video, o_video, num):
18
cap =
cv2.VideoCapture(i_video)
19
num_frame =
cap.get(cv2.CAP_PROP_FRAME_COUNT)
20
expand_name =
'
.jpg
'
21
if
not
cap.isOpened():
22
print
(
"
Please check the path.
"
)
23
cnt =
0
24
count =
0
25
while
1
:
26
ret, frame =
cap.read()
27
cnt += 1
28
#
how
29
#
many
30
#
frame
31
#
to
32
#
cut
33
if
cnt % num ==
0:
34
count += 1
35
cv2.imwrite(os.path.join(o_video, str(count) +
expand_name), frame)
36
37
if
not
ret:
38
break
39
40
if
__name__
==
'
__main__
'
:
41
args =
parse_args()
42
if
not
os.path.exists(args.output):
43
os.makedirs(args.output)
44
print
(
'
Called with args:
'
)
45
print
(args)
46
process_video(args.input, args.output, args.skip_frame)
參考
https://blog.csdn.net/qq_36190978/article/details/85284484
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

