作者小头像 Lv.1
3 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
0
3
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

发布时间 2021/04/28 10:20:02 最后回复 hw79896142 2021/09/08 12:44:21 版块 AI开发平台ModelArts
4653 6 0
发布时间 2020/08/30 14:37:17 最后回复 某地瓜 2020/08/31 23:25:31 版块 AI开发平台ModelArts
2632 9 0
他的回复:
[quote]回复:冰露 发表于 2020-8-31 09:44您好,请确认下作业中给出提示的四步都完成了,特别是第三步中“你需要修改下一个cell中的_SAMPLE_VIDEO_FRAMES参数值为视频总 帧数减1,”[/quote]import id3后,新建一个cell。在新cell中导入代码并补全代码 'dataset_subset/Bowling/v_Bowling_g05_c04.avi'。import osimport cv2import timeimport numpy as npdef get_video_info(video_path):    _, ext = os.path.splitext(video_path)    if not ext in ['.avi', '.mp4']:        raise ValueError('Extension "%s" not supported' % ext)    cap = cv2.VideoCapture(video_path)    if not cap.isOpened():        raise ValueError("Could not open the file.\n{}".format(video_path))    print('视频分辨率: %d x %d' % (cap.get(cv2.CAP_PROP_FRAME_WIDTH), cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))    print('视频帧率:', cap.get(cv2.CAP_PROP_FPS))    print('视频总帧数:', cap.get(cv2.CAP_PROP_FRAME_COUNT))def compute_rgb(video_path):    """Compute RGB"""    rgb = []    vidcap = cv2.VideoCapture(video_path)    count = 0    while True:        success, frame = vidcap.read()        if success is True:            count += 1            # if count % 2 == 0:            #     continue            frame = cv2.resize(frame, (342, 256))            frame = (frame / 255.) * 2 - 1            frame = frame[16:240, 59:283]            rgb.append(frame)        else:            break    vidcap.release()    rgb = rgb[:-1]    rgb = np.asarray([np.array(rgb)]).astype(np.float32)    return rgbdef compute_TVL1(video_path):    """Compute the TV-L1 optical flow."""    flow = []    TVL1 = cv2.DualTVL1OpticalFlow_create()  # for opencv version: 3.4.2.17    vidcap = cv2.VideoCapture(video_path)    success, frame1 = vidcap.read()    prev_frame = cv2.cvtColor(frame1, cv2.COLOR_RGB2GRAY)    vid_len = int(vidcap.get(cv2.CAP_PROP_FRAME_COUNT))    bins = np.linspace(-20, 20, num=256)    for count in range(0, vid_len - 1):        success, frame2 = vidcap.read()        count += 1        # if count % 2 == 0:        #     continue        curr_frame = cv2.cvtColor(frame2, cv2.COLOR_RGB2GRAY)        curr_flow = TVL1.calc(prev_frame, curr_frame, None)        assert (curr_flow.dtype == np.float32)        # Truncate large motions        curr_flow[curr_flow >= 20] = 20        curr_flow[curr_flow = -20] = -20        # digitize and scale to [-1;1]        curr_flow = np.digitize(curr_flow, bins)        curr_flow = (curr_flow / 255.) * 2 - 1        # cropping the center        curr_flow = curr_flow[8:232, 48:272]        flow.append(curr_flow)        prev_frame = curr_frame    vidcap.release()    flow = np.asarray([np.array(flow)]).astype(np.float32)    return flowvideo_path = 'dataset_subset/Bowling/v_Bowling_g05_c04.avi'  # TODO,填写视频所在的路径save_dir = os.path.dirname(video_path) + '_out'if not os.path.exists(save_dir):    os.mkdir(save_dir)get_video_info(video_path)start_time = time.time()print('Extract RGB...')rgb = compute_rgb(video_path)print('save rgb with shape ', rgb.shape)rgb_save_path = os.path.join(save_dir, os.path.basename(video_path).split('.')[0] + '_rgb.npy')np.save(rgb_save_path, rgb)print('Compute rgb in sec: ', time.time() - start_time)start_time = time.time()print('Extract Flow...')flow = compute_TVL1(video_path)print('Save flow with shape ', flow.shape)flow_save_path = os.path.join(save_dir, os.path.basename(video_path).split('.')[0] + '_flow.npy')np.save(flow_save_path, flow)print('Compute flow in sec: ', time.time() - start_time)print('save rgb npy at:', rgb_save_path)print('save flow npy at:', flow_save_path)print('Compute Success')修改帧数和存储地址结果。。。。。。。。。。。。。。。。。。。。。