Example #1
0
    def ReadVideos(self):
        '''
        主要功能是从视频中读取图像并重命名后保存在指定的文件夹中
        函数输入:无
        隐藏输入:
            self.opts:'video_image_dir','video_vr_opts','video_group_num',
                'video_wait'
        函数输出:无
        隐藏输出:
            self.video_list , self.video_num
        自定义函数调用:
            self.GetFiles
            self.SaveVideoImages
            VideoReader
        '''
        # 获得文件夹中的所有视频文件
        file_list = self.GetFiles()
        print(f'INFO:Find {len(file_list)} Files with ', end='')
        # 判断是不是视频格式
        self.video_list = FilesFilter(file_list, _VIDTYPE_LIST)
        self.video_num = len(self.video_list)
        print(f'{len(self.video_list)} Videos')
        # 在源文件目录下创建存放源图像文件的目录,此目录及其中的文件会被保留
        video_image_dir = self.opts['video_image_dir']
        if not os.path.exists(video_image_dir):
            os.makedirs(video_image_dir)
        # 对每个视频进行读取、保存
        for video_name in self.video_list:
            vr_opts = copy.deepcopy(self.opts['video_vr_opts'])
            vr = VideoReader(video_name, opts=vr_opts)
            if self.opts['video_group_num']:
                vr.AutoSet(self.opts['video_group_num'])
            vr.PrintVideoInfo()
            image_groups_arrays = vr.GetAllGroups()
            self.SaveVideoImages(image_groups_arrays, video_name)

        # 询问是否暂停来检查输出是否符合预期
        if (self.opts['video_wait']):
            print('\nINFO:Video read complete ',
                  f', Please check the pictures in folder {video_image_dir} ',
                  ',input Y or y to continue')
            while (True):
                cin = input()
                if (cin is 'Y' or cin is 'y'):
                    break
                else:
                    print('input Y or y to continue')