python工具-将视频按帧截取图片(附代码)

系统 1469 0

描述:将一个视频流按帧数截取大量的图片

用途: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元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论