视频中提取到的共感要素画折线图添加到视频中,实时系统。 python实现

我这边 有24个视频,首先 要对他们进行video转picture的转换
然后将名称重新定义

import glob
import os
num =[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
for n in range(len(num)):
	#图片位置
    inputPath = r'E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/stimuli/picture/'+str(num[n])+'/'
    fileList = glob.glob(inputPath + '/*')
    cnt = 0
    for path in fileList:
        os.rename(path, inputPath+str(cnt).zfill(1)+path[path.rfind('.'):])
        cnt +=1

然后对csv中的数据画折线图,并保存

def simple_plot():
    # 生成画布
    plt.figure(figsize=(8, 2), dpi=80)
    # 打开交互模式
    plt.ion()
    # 读取csv中的数据
    data = pd.DataFrame(pd.read_csv(path, encoding='CP949', engine='python'))
    x = np.array(data['x']);y = np.array(data['y'])
    X = []; Y = []
    xx = np.linspace(0.0, len(x) / 30, len(x))
    #循环
    for n in range(len(x)):
        # plt.clf() #清空画布上的所有内容
        plt.title("empathy")
        #y轴范围和名称
        plt.ylabel("percent")x
        plt.ylim(0.0, 100.0)
        #x轴范围和名称
        plt.xlabel("time")
        plt.xlim(0.0, float(len(x)/30))
        #放入数组中
        X.append(xx[n])
        Y.append(y[n])
        #画折线,每个点标出数据,以百分比的形式
        plt.plot(X,Y,'-r')
        plt.text(xx[n], y[n],  '%.2f%%' %y[n], ha='center', va='bottom',color = "r", fontsize=20)
        plt.pause(0.01)
        #保存图片
        plt.savefig(
            'E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/feature/image_7_15/y_pred/'+str(num[i])+'_video/'+str(num[i])+'/'+'{}.png'.format(n),transparent=True)#这里的transparent指的是保存的是透明的背景图
        n = n + 1
        #清除画布
        plt.cla()
num =[1,2,3,4]
for i in range(len(num)):
    path = 'E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/feature/image_7_15/y_pred/'+ str(num[i])+'_video/' + str(num[i]) +'.csv'
    simple_plot()

然后将折线图和视频每一帧一一对应合并成一张图

from PIL import Image
import os.path as op

def img():
    img1 = Image.open(op.join(path_1, file)).convert('RGBA')
    img2 = Image.open(op.join(path_2, file)).convert('RGBA')
    r, g, b, a = img1.split()
    img2.paste(img1, (0, 0), mask=a)#将图1贴在图二上
    img2.save('E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/feature/image_7_15/y_pred/'+ str(num[i])+'_video/' + str(num[i]) +'_image/' + file,)
num =[2,13,15,16,17,18,20,22]
for i in range(len(num)):
    path_1 = 'E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/feature/image_7_15/y_pred/'+ str(num[i])+'_video/' + str(num[i]) +'/'
    path_2 = 'E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/stimuli/picture/'+ str(num[i])+'/'
    for file in os.listdir(path_1):
        print(file)
        img()

然后再将做好的image转为MP4

import cv2
import os

def videos():
    fps = 30
    fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')
    video_writer = cv2.VideoWriter(filename= path_out, fourcc=fourcc, fps=fps, frameSize=(1280, 718))#frameSize一定要跟你的图片尺寸一样才可以
    for i in range(0,len(all_folds)):
      p = i
      if os.path.exists(path + str(p)+'.png'):  #判断图片是否存在
        img = cv2.imread(filename= path +str(p)+'.png')
        cv2.waitKey(100)
        video_writer.write(img)
        print(str(p) + '.png' + ' done!')
    video_writer.release()

num =[22]
for i in range(len(num)):

    path = 'E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/feature/image_7_15/y_pred/'+str(num[i])+'_video/'+str(num[i])+'_image/'
    path_out = 'E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/feature/image_7_15/y_pred/'+str(num[i])+'_video/'+str(num[i])+'_image.mp4'
    all_folds = os.listdir(path)
    print(len(all_folds))
    videos()

#然后再将声音加入做好的视频当中就完成啦!

import subprocess

def video_add_mp3(path_video, path_wav):

    outfile_name = path_out
    subprocess.call('ffmpeg -i ' + path_video
                    + ' -i ' + path_wav + ' -strict -2 -f mp4 '
                    + outfile_name, shell=True)

num =[2,13,15,16,17,18,20,22]
for i in range(len(num)):
    #视频地址
    path_video = 'E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/feature/image_7_15/y_pred/' + str(
        num[i]) + '_video/' + str(num[i]) + '_image.mp4'
    # 音频地址
    path_wav = 'E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/stimuli/01_AUDIO/' + str(num[i]) + '.wav'
    path_out = 'E:/ffmpeg-latest-win64-static/2019_11_12_experimental_data/stimuli/feature/image_7_15/y_pred/'+str(num[i])+'_video/'+str(num[i])+'.mp4'
    video_add_mp3(path_video, path_wav)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值